PRIMARY KEY डेटाबेस में प्रत्येक पंक्ति को विशिष्ट रूप से पहचानता है। एक PRIMARY KEY में अद्वितीय मान होने चाहिए और NULL मान नहीं हो सकते। एक MySQL टेबल में केवल एक PRIMARY KEY हो सकती है।
टेबल बनाते समय PRIMARY KEY परिभाषित करना
mysql> CREATE TABLE Student(
RollNo INT PRIMARY KEY,
Name VARCHAR(20),
Address VARCHAR(20),
DOB DATE
);
Query OK, 0 rows affected (0.16 sec)
वेरिफिकेशन
mysql> DESCRIBE Student; +---------+-------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +---------+-------------+------+-----+---------+-------+ | RollNo | int(11) | NO | PRI | NULL | | | Name | varchar(20) | YES | | NULL | | | Address | varchar(20) | YES | | NULL | | | DOB | date | YES | | NULL | | +---------+-------------+------+-----+---------+-------+
PRIMARY KEY के नियम
| नियम | विवरण |
|---|---|
| अद्वितीयता | सभी मान अलग-अलग होने चाहिए |
| नॉन-NULL | NULL मान अनुमति नहीं |
| एक प्रति टेबल | केवल एक PRIMARY KEY प्रति टेबल |
| क्लस्टर्ड इंडेक्स | InnoDB में डेटा PK क्रम में स्टोर होता है |
| कंपोजिट PK | एकाधिक कॉलम मिलाकर एक PK बना सकते हैं |
व्यवहार प्रदर्शन
-- वैध इन्सर्ट INSERT INTO Student VALUES (1, 'Amit', 'Delhi', '2000-01-01'); -- डुप्लिकेट PK - एरर INSERT INTO Student VALUES (1, 'Sumit', 'Mumbai', '2001-02-02'); ERROR 1062 (23000): Duplicate entry '1' for key 'PRIMARY' -- NULL PK - एरर INSERT INTO Student VALUES (NULL, 'Test', 'City', '2002-03-03'); ERROR 1048 (23000): Column 'RollNo' cannot be null
मौजूदा टेबल पर PRIMARY KEY जोड़ना
ALTER TABLE Student ADD PRIMARY KEY (RollNo); -- या ALTER TABLE Student MODIFY RollNo INT PRIMARY KEY;
सर्वोत्तम अभ्यास
- सर्जेट की (Surrogate Key) उपयोग करें:
id INT AUTO_INCREMENT PRIMARY KEY - प्राकृतिक कुंजी (Natural Key) तभी जब वास्तव में अद्वितीय और स्थिर हो
- कंपोजिट PK केवल जब आवश्यक हो (जंक्शन टेबल आदि)