चूंकि PRIMARY KEY के लिए UNIQUE और NOT NULL दोनों आवश्यक हैं, यदि किसी कॉलम पर ये दोनों कंस्ट्रेंट एक साथ लागू कर दिए जाएं, तो वह स्वतः PRIMARY KEY बन जाता है।
उदाहरण
Student123 टेबल में RollNo पर UNIQUE और NOT NULL दोनों लागू करना:
mysql> CREATE TABLE Student123(
RollNo INT UNIQUE NOT NULL,
Name VARCHAR(20)
);
Query OK, 0 rows affected (0.25 sec)
mysql> DESCRIBE Student123;
+--------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+--------+-------------+------+-----+---------+-------+
| RollNo | int(11) | NO | PRI | NULL | |
| Name | varchar(20) | YES | | NULL | |
+--------+-------------+------+-----+---------+-------+
परिणाम विश्लेषण
Keyकॉलम में PRI दिखाता है- MySQL आंतरिक रूप से UNIQUE + NOT NULL = PRIMARY KEY मानता है
- क्लस्टर्ड इंडेक्स स्वतः बन जाता है
तुलना
| पद्धति | सिंटैक्स | परिणाम |
|---|---|---|
| स्पष्ट PRIMARY KEY | PRIMARY KEY (col) | Key=PRI, क्लस्टर्ड इंडेक्स |
| अस्पष्ट (UNIQUE+NOT NULL) | UNIQUE NOT NULL | Key=PRI, क्लस्टर्ड इंडेक्स |
| केवल UNIQUE | UNIQUE | Key=UNI, नॉन-क्लस्टर्ड, NULL अनुमति |
| केवल NOT NULL | NOT NULL | Key=खाली, कोई इंडेक्स नहीं |
व्यावहारिक उपयोगह2>
यह तकनीक तब उपयोगी है जब:
- आप स्पष्ट PRIMARY KEY कीवर्ड नहीं लिखना चाहते
- कंस्ट्रेंट नाम कस्टमाइज़ करना चाहते हैं (UNIQUE कंस्ट्रेंट नाम दे सकते हैं)
- पुराने कोडबेस में माइग्रेशन कर रहे हैं
सिफारिश: स्पष्टता के लिए PRIMARY KEY कीवर्ड का उपयोग करना बेहतर है।