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 TypeDefinitionSchool 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 KeyColumns का कोई भी combination जो row uniquely identify करे।{roll_no}, {roll_no, name}, {aadhar_no, city}
Alternate KeyCandidate 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 KeyUniqueness 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 NULLColumn खाली नहीं रह सकता — value ज़रूरी हैStudent का नाम mandatory है
UNIQUEसभी values different होनी चाहिएEmail ID हर student की अलग
PRIMARY KEYUnique + NOT NULL — हर row का main identifierroll_no: duplicate नहीं, NULL नहीं
FOREIGN KEYदूसरी table के PRIMARY KEY से link — orphan records नहींfee_records.roll_no students में exist करना चाहिए
CHECKCondition के against validate करेmarks 0 से 100 के बीच होने चाहिए
DEFAULTINSERT पर 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

  1. library_db बनाएं: books (book_id PRIMARY KEY, title NOT NULL, isbn UNIQUE, copies CHECK >= 0) और issued_books FOREIGN KEY के साथ।
  2. हर constraint को violate करने वाली INSERT query लिखें और exact error message note करें।
  3. Hospital database (patients, doctors, appointments) के लिए सभी 7 keys के examples लिखें।
  4. 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 देता है।
🔗

Share this topic with a friend

यह topic किसी दोस्त को भेजें

Found it useful? Send it to a classmate learning the same thing.

अच्छा लगा? जो दोस्त यही सीख रहा है, उसे भेज दीजिए।

💻 लाइव कोड एडिटर

इस पेज के प्रोग्राम यहीं तैयार हैं — चलाएँ, बदलें और सीखें। कुछ भी इंस्टॉल किए बिना।
OneCompiler द्वारा संचालित। कोड एडिटर में अपने आप आ जाता है — Run दबाकर आउटपुट देखें। अगर एडिटर न खुले तो नए टैब में खोलें.