MySQL + SQL · Lesson 16
DBMS में Keys और Constraints
Keys क्या हैं?
Keys table में एक या अधिक columns होते हैं जो हर row को uniquely identify करते हैं, tables के बीच relationships बनाते हैं, और data integrity ensure करते हैं। Keys relational database design की backbone हैं।
Keys के बिना database:
- "Aarav Sharma" नाम के दो students में अंतर नहीं कर सकता।
- Fee records को correct student से link नहीं कर सकता।
- Duplicate या incorrect data रोक नहीं सकता।
Keys के प्रकार
| Key Type | Definition | School Example |
|---|---|---|
| Primary Key | हर row को uniquely identify करे। NULL या duplicate नहीं हो सकता। | students table में roll_no — हर student का अलग roll number |
| Foreign Key | दूसरी table के PRIMARY KEY को refer करे। Referential integrity maintain करे। | fee_records.roll_no → students.roll_no |
| Candidate Key | कोई भी column जो primary key बन सकता हो — unique और not null। | roll_no, aadhar_no, email — तीनों student को identify कर सकते हैं |
| Super Key | Columns का कोई भी combination जो row uniquely identify करे। | {roll_no}, {roll_no, name}, {aadhar_no, city} |
| Alternate Key | Candidate keys जो primary key नहीं चुने गए। | roll_no primary key है, तो aadhar_no और email alternate keys हैं |
| Composite Key | दो या अधिक columns मिलकर primary key बनाएं। | exam_results में {roll_no + subject} = एक unique entry |
| Unique Key | Uniqueness ensure करे लेकिन एक NULL allow करे। | students.email — unique, लेकिन email न हो तो NULL भी चलेगा |
Constraints क्या हैं?
Constraints वे rules हैं जो columns पर apply होते हैं और automatically invalid, incorrect या inconsistent data को database में enter होने से रोकते हैं। ये data integrity enforce करते हैं बिना extra programming के।
Constraints के प्रकार
| Constraint | मतलब | Example |
|---|---|---|
| NOT NULL | Column खाली नहीं रह सकता — value ज़रूरी है | Student का नाम mandatory है |
| UNIQUE | सभी values different होनी चाहिए | Email ID हर student की अलग |
| PRIMARY KEY | Unique + NOT NULL — हर row का main identifier | roll_no: duplicate नहीं, NULL नहीं |
| FOREIGN KEY | दूसरी table के PRIMARY KEY से link — orphan records नहीं | fee_records.roll_no students में exist करना चाहिए |
| CHECK | Condition के against validate करे | marks 0 से 100 के बीच होने चाहिए |
| DEFAULT | INSERT पर value न दो तो automatic value set हो | attendance default 'P' |
| AUTO_INCREMENT | अपने आप अगला number generate हो | fee_id: 1, 2, 3... automatically |
SQL Examples with Output
CREATE DATABASE school_db;
USE school_db;
CREATE TABLE students (
roll_no INT PRIMARY KEY, -- PRIMARY KEY
name VARCHAR(80) NOT NULL, -- NOT NULL
email VARCHAR(100) UNIQUE, -- UNIQUE
gender CHAR(1) DEFAULT 'M', -- DEFAULT
city VARCHAR(50) NOT NULL
);
CREATE TABLE marks (
mark_id INT AUTO_INCREMENT PRIMARY KEY, -- AUTO_INCREMENT
roll_no INT NOT NULL,
subject VARCHAR(40) NOT NULL,
marks INT CHECK (marks BETWEEN 0 AND 100), -- CHECK
FOREIGN KEY (roll_no) REFERENCES students(roll_no) -- FOREIGN KEY
);
Constraint violations देखें
-- FAIL: duplicate roll_no (PRIMARY KEY violation)
INSERT INTO students VALUES (1, 'Ravi Singh', 'ravi@email.com', 'M', 'Meerut');
-- ERROR 1062: Duplicate entry '1' for key 'PRIMARY'
-- FAIL: marks 110 (CHECK violation)
INSERT INTO marks (roll_no, subject, marks) VALUES (1, 'Math', 110);
-- ERROR 3819: Check constraint violated
-- FAIL: roll_no 99 students में नहीं है (FOREIGN KEY violation)
INSERT INTO marks (roll_no, subject, marks) VALUES (99, 'Math', 85);
-- ERROR 1452: foreign key constraint fails
हर गलत entry पर MySQL automatically ERROR देता है — data safe रहता है।
Common Mistakes
- PRIMARY KEY भूल जाना: Primary key के बिना table duplicate rows allow करती है।
- UNIQUE और PRIMARY KEY confuse करना: UNIQUE एक NULL allow करता है; PRIMARY KEY कभी NULL नहीं। एक table में कई UNIQUE columns हो सकते हैं लेकिन PRIMARY KEY सिर्फ एक।
- FOREIGN KEY data type mismatch: Foreign key और referenced primary key का data type exactly same होना चाहिए।
- MySQL 5.7 में CHECK: MySQL 5.7 में CHECK accept होता है लेकिन enforce नहीं होता। MySQL 8.0+ में ही enforce होता है।
- Parent record delete करना: Student को delete करो जिसके fee records हैं → FOREIGN KEY error। ON DELETE CASCADE use करें।
Practice Tasks
library_dbबनाएं:books(book_id PRIMARY KEY, title NOT NULL, isbn UNIQUE, copies CHECK >= 0) औरissued_booksFOREIGN KEY के साथ।- हर constraint को violate करने वाली INSERT query लिखें और exact error message note करें।
- Hospital database (patients, doctors, appointments) के लिए सभी 7 keys के examples लिखें।
- Viva: "PRIMARY KEY और UNIQUE KEY में क्या अंतर है?" — 4 points में answer।
Summary
- Keys rows identify करते हैं और tables link करते हैं — Primary, Foreign, Candidate, Super, Alternate, Composite, Unique।
- Constraints data rules automatically enforce करते हैं — NOT NULL, UNIQUE, PRIMARY KEY, FOREIGN KEY, CHECK, DEFAULT।
- PRIMARY KEY = Unique + NOT NULL। UNIQUE = Unique + एक NULL allow।
- FOREIGN KEY referential integrity ensure करता है।
- CHECK MySQL 8.0+ में enforce होता है। AUTO_INCREMENT automatic sequential IDs देता है।
💻 लाइव कोड एडिटर
इस पेज के प्रोग्राम यहीं तैयार हैं — चलाएँ, बदलें और सीखें। कुछ भी इंस्टॉल किए बिना।
OneCompiler द्वारा संचालित। कोड एडिटर में अपने आप आ जाता है — Run दबाकर आउटपुट देखें। अगर एडिटर न खुले तो नए टैब में खोलें.