Defining primary keys, foreign keys, Unique Keys, CHECK constraints in a table, removing constraints from table SQL. Sub Queries.
- Siddharth Sharma
- Mar 18
- 4 min read
SQL Constraints (डेटाबेस कंस्ट्रेंट्स) क्या हैं?
Constraints (नियम या प्रतिबंध) वे शर्तें (Rules) होते हैं जो किसी Table के डेटा (Columns) पर लागू की जाती हैं। इनका मुख्य उद्देश्य Data Integrity (डेटा की शुद्धता और सटीकता) को बनाए रखना है। ये सुनिश्चित करते हैं कि टेबल में कोई भी गलत या अमान्य (Invalid) डेटा प्रवेश (Insert) न कर सके। यदि कोई डेटा इन नियमों का उल्लंघन (Violate) करता है, तो SQL उस डेटा को टेबल में सेव होने से रोक देता है और Error दे देता है।
इन्हें या तो टेबल बनाते समय (CREATE TABLE के साथ) या टेबल बनने के बाद (ALTER TABLE के साथ) लगाया जा सकता है।
आइए 4 सबसे प्रमुख Constraints को विस्तार से समझते हैं:

1. PRIMARY KEY Constraint (प्राइमरी की)
Definition (परिभाषा): PRIMARY KEY एक ऐसा कॉलम (या कॉलम्स का समूह) है जो टेबल के प्रत्येक रिकॉर्ड (Row) को विशिष्ट रूप से पहचानता है (Uniquely Identify करता है)।

Rules (नियम):
इसमें कभी भी NULL (खाली) वैल्यू नहीं हो सकती।
इसमें मौजूद हर वैल्यू अद्वितीय (Unique) होनी चाहिए; यानी कोई डुप्लीकेट वैल्यू नहीं हो सकती।
एक टेबल में केवल एक ही PRIMARY KEY हो सकती है।
Example (उदाहरण): टेबल बनाते समय Primary Key लगाना।
SQL
CREATE TABLE Students (
Roll_No INT PRIMARY KEY,
Name VARCHAR(50),
Age INT
);
ALTER TABLE के जरिए लगाना (अगर टेबल पहले बन चुकी हो):
SQL
ALTER TABLE Students ADD PRIMARY KEY (Roll_No);
2. UNIQUE KEY Constraint (यूनिक की)
Definition (परिभाषा): UNIQUE KEY भी यह सुनिश्चित करती है कि कॉलम में मौजूद सभी वैल्यूज़ एक-दूसरे से अलग (Distinct) हों।
Primary Key और Unique Key में अंतर: यद्यपि दोनों डेटा को यूनिक रखते हैं, लेकिन एक टेबल में कई UNIQUE Keys हो सकती हैं (जबकि Primary Key एक ही होती है)। इसके अलावा, ज़्यादातर RDBMS (जैसे MySQL) में Unique Key कॉलम में एक NULL वैल्यू की अनुमति (Allow) होती है, जबकि Primary Key में बिलकुल नहीं।

Example (उदाहरण): हम चाहते हैं कि हर छात्र का Email ID अलग हो।
SQL
CREATE TABLE Students (
Roll_No INT PRIMARY KEY,
Name VARCHAR(50),
Email VARCHAR(100) UNIQUE
);
ALTER TABLE के जरिए लगाना:
SQL
ALTER TABLE Students ADD UNIQUE (Email);
3. FOREIGN KEY Constraint (फॉरेन की)
Definition (परिभाषा): FOREIGN KEY का उपयोग दो टेबल्स के बीच संबंध (Relationship) स्थापित करने और Referential Integrity को बनाए रखने के लिए किया जाता है। यह एक टेबल का वह कॉलम है जो किसी दूसरी (या उसी) टेबल की PRIMARY KEY को संदर्भित (Reference) करता है।
यह सुनिश्चित करता है कि फॉरेन की वाले कॉलम में आप केवल वही वैल्यू डाल सकें जो मुख्य (Parent) टेबल की प्राइमरी की में पहले से मौजूद हो।

Example (उदाहरण): मान लीजिए हमारे पास एक Courses (Parent) टेबल है और हम Students (Child) टेबल बना रहे हैं।
SQL
-- Parent Table
CREATE TABLE Courses (
Course_ID INT PRIMARY KEY,
Course_Name VARCHAR(50)
);
-- Child Table
CREATE TABLE Students (
Roll_No INT PRIMARY KEY,
Name VARCHAR(50),
Course_ID INT,
FOREIGN KEY (Course_ID) REFERENCES Courses(Course_ID)
);
ALTER TABLE के जरिए लगाना:
SQL
ALTER TABLE Students
ADD FOREIGN KEY (Course_ID) REFERENCES Courses(Course_ID);

4. CHECK Constraint (चेक कंस्ट्रेंट)
Definition (परिभाषा): CHECK कंस्ट्रेंट का उपयोग कॉलम में डाली जाने वाली वैल्यूज़ की सीमा (Range) या शर्त तय करने के लिए किया जाता है। यदि कोई डेटा इस शर्त (Condition) को पूरा करता है, तभी वह टेबल में सेव होगा, अन्यथा वह रिजेक्ट हो जाएगा।
Example (उदाहरण): मान लीजिए हम चाहते हैं कि Students टेबल में केवल उन्हीं छात्रों का डेटा सेव हो जिनकी आयु (Age) 18 वर्ष या उससे अधिक है।
SQL
CREATE TABLE Students (
Roll_No INT PRIMARY KEY,
Name VARCHAR(50),
Age INT CHECK (Age >= 18)
);
(यदि आप इसमें Age = 17 डालने की कोशिश करेंगे, तो SQL एरर दे देगा)।

ALTER TABLE के जरिए लगाना (Constraint को नाम देकर): (Constraint को एक नाम देना हमेशा एक अच्छी प्रैक्टिस है, ताकि बाद में उसे हटाने में आसानी हो)
SQL
ALTER TABLE Students
ADD CONSTRAINT Chk_Age CHECK (Age >= 18);
Removing Constraints from a Table (टेबल से कंस्ट्रेंट्स को हटाना)
जब डेटाबेस के डिज़ाइन या बिज़नेस रूल्स में बदलाव होता है, तो हमें कभी-कभी पहले से लगे हुए नियमों (Constraints) को हटाना (Drop/Remove) पड़ता है। इसके लिए हम ALTER TABLE कमांड के साथ DROP क्लॉज़ का उपयोग करते हैं।
(ध्यान दें: अलग-अलग RDBMS जैसे MySQL, Oracle, और SQL Server में Syntax थोड़ा अलग हो सकता है। यहाँ MySQL के सबसे आम Syntax दिए गए हैं)।

1. Removing a PRIMARY KEY (प्राइमरी की हटाना)
Primary Key को हटाने के लिए आपको कॉलम का नाम बताने की आवश्यकता नहीं होती, क्योंकि एक टेबल में केवल एक ही Primary Key होती है।
SQL
ALTER TABLE Students DROP PRIMARY KEY;
2. Removing a FOREIGN KEY (फॉरेन की हटाना)
Foreign Key को हटाने के लिए आपको उस कंस्ट्रेंट का नाम (Name) पता होना चाहिए। (यदि आपने बनाते समय नाम नहीं दिया था, तो सिस्टम उसे ऑटोमैटिक नाम दे देता है जिसे SHOW CREATE TABLE कमांड से देखा जा सकता है)। मान लीजिए हमारी Foreign Key का नाम fk_course है:
SQL
ALTER TABLE Students DROP FOREIGN KEY fk_course;
3. Removing a UNIQUE KEY (यूनिक की हटाना)
MySQL में UNIQUE कंस्ट्रेंट को एक Index की तरह माना जाता है, इसलिए इसे ड्रॉप करने के लिए DROP INDEX का उपयोग किया जाता है। यहाँ उस कॉलम का नाम देना होता है जिस पर Unique लगा है।
SQL
ALTER TABLE Students DROP INDEX Email;
(Oracle या SQL Server में: ALTER TABLE Students DROP CONSTRAINT Constraint_Name;)
4. Removing a CHECK Constraint (चेक कंस्ट्रेंट हटाना)
इसे हटाने के लिए भी आपको CHECK कंस्ट्रेंट का नाम पता होना चाहिए (जैसे हमने ऊपर बनाते समय इसे Chk_Age नाम दिया था)।
SQL
-- MySQL (Version 8.0.16 और उसके बाद):
ALTER TABLE Students DROP CHECK Chk_Age;
-- SQL Server / Oracle:
ALTER TABLE Students DROP CONSTRAINT Chk_Age;

Conclusion (निष्कर्ष)
PRIMARY KEY: रिकॉर्ड को यूनिक बनाता है, NULL नहीं हो सकता।
UNIQUE KEY: रिकॉर्ड को यूनिक बनाता है, लेकिन एक NULL की अनुमति देता है।
FOREIGN KEY: दो टेबल्स को जोड़ता है और अमान्य (Invalid) रेफरेंस को रोकता है।
CHECK: यह सुनिश्चित करता है कि डेटा एक विशिष्ट शर्त (Condition) को पूरा करे।
इन Constraints को लगाना और समय आने पर उन्हें सुरक्षित रूप से हटाना (Drop करना), एक अच्छे डेटाबेस एडमिनिस्ट्रेटर (DBA) और डेवलपर की सबसे महत्वपूर्ण स्किल्स में से एक है।




Comments