Chapter 9SQL Tutorial~1 min read
Constraints & Indexes
Data Integrity आणि Performance
Constraints data integrity ensure करतात — wrong data database मध्ये जाणार नाही. Indexes queries fast करतात — database ला प्रत्येक वेळी सगळ्या rows scan नाही करावे लागत.
FOREIGN KEY — Tables मधले Relationship
FOREIGN KEY constraint
sql
CREATE TABLE courses (
id INT PRIMARY KEY AUTO_INCREMENT,
title VARCHAR(200) NOT NULL
);
CREATE TABLE enrollments (
id INT PRIMARY KEY AUTO_INCREMENT,
student_id INT NOT NULL,
course_id INT NOT NULL,
enrolled_on DATE DEFAULT (CURRENT_DATE),
-- FOREIGN KEY — referential integrity
FOREIGN KEY (student_id) REFERENCES students(id)
ON DELETE CASCADE, -- student delete → enrollments delete
FOREIGN KEY (course_id) REFERENCES courses(id)
ON DELETE RESTRICT -- course delete — enrolled असेल तर error
);
-- student_id = 999 नाही students table मध्ये
-- INSERT INTO enrollments (student_id, ...) VALUES (999, ...);
-- ❌ Error: Cannot add or update a child rowINDEX — Query Performance
Creating and using indexes
sql
-- Index म्हणजे book च्या शेवटी index सारखे
-- Frequently searched columns वर index बनवा
-- Single column index
CREATE INDEX idx_city ON students(city);
-- Composite index — multiple columns
CREATE INDEX idx_city_marks ON students(city, marks);
-- Unique index
CREATE UNIQUE INDEX idx_email ON students(email);
-- Index वापरून query automatically fast होते
SELECT * FROM students WHERE city = 'Pune';
-- आता city = 'Pune' शोधणे खूप fast!
-- Index पाहणे
SHOW INDEX FROM students;
-- Index काढणे
DROP INDEX idx_city ON students;Views — Virtual Tables
CREATE VIEW
sql
-- View म्हणजे saved query — virtual table
-- Complex query एकदा define करा, नंतर table सारखे वापरा
CREATE VIEW pune_toppers AS
SELECT name, marks, city
FROM students
WHERE city = 'Pune' AND marks >= 80
ORDER BY marks DESC;
-- View वापरणे — table सारखेच!
SELECT * FROM pune_toppers;
SELECT name FROM pune_toppers WHERE marks > 85;
-- View update करणे
CREATE OR REPLACE VIEW pune_toppers AS
SELECT name, marks, city
FROM students
WHERE city = 'Pune' AND marks >= 75;
-- View काढणे
DROP VIEW pune_toppers;✅ Key Points — लक्षात ठेवा
- ▸FOREIGN KEY — दोन tables मधला relationship, referential integrity
- ▸ON DELETE CASCADE — parent delete → child delete
- ▸ON DELETE RESTRICT — parent delete block if child exists
- ▸INDEX — frequently searched columns वर, queries fast
- ▸VIEW — saved query, virtual table, complex queries simple
0/10 chapters पूर्ण