MySQL में UNIQUE कंस्ट्रेंट (इंडेक्स) का उपयोग करके एक या अधिक कॉलम के संयोजन को अद्वितीय (unique) बना सकते हैं, जिससे डुप्लिकेट पंक्तियां रोकी जाती हैं।
सिंटैक्स
-- टेबल बनाते समय
CREATE TABLE टेबल_नाम (
कॉलम1 टाइप,
कॉलम2 टाइप,
UNIQUE (कॉलम1, कॉलम2, ...)
);
-- मौजूदा टेबल पर
ALTER TABLE टेबल_नाम
ADD UNIQUE INDEX इंडेक्स_नाम (कॉलम1, कॉलम2, ...);
उदाहरण: (id, Name, Age) संयोजन यूनिक
1. टेबल बनाएं
mysql> CREATE TABLE DemoTable1580 (
-> id INT,
-> Name VARCHAR(20),
-> Age INT
-> );
2. यूनिक इंडेक्स जोड़ें
mysql> ALTER TABLE DemoTable1580
-> ADD UNIQUE INDEX (id, Name, Age);
3. डेटा डालें
mysql> INSERT INTO DemoTable1580 VALUES(101, 'Chris', 21); -- OK mysql> INSERT INTO DemoTable1580 VALUES(102, 'Chris', 21); -- OK (id अलग) mysql> INSERT INTO DemoTable1580 VALUES(102, 'David', 21); -- OK (Name अलग) mysql> INSERT INTO DemoTable1580 VALUES(101, 'Chris', 21); -- ERROR! डुप्लिकेट
ERROR 1062 (23000): Duplicate entry '101-Chris-21' for key 'id'
4. अंतिम डेटा
mysql> SELECT * FROM DemoTable1580;
+------+-------+------+ | id | Name | Age | +------+-------+------+ | 101 | Chris | 21 | | 102 | Chris | 21 | | 102 | David | 21 | +------+-------+------+
UNIQUE कंस्ट्रेंट प्रकार
| प्रकार | सिंटैक्स | विवरण |
|---|---|---|
| कॉलम-स्तर | col INT UNIQUE | एकल कॉलम |
| टेबल-स्तर | UNIQUE (col1, col2) | संयुक्त (composite) |
| नामित इंडेक्स | CONSTRAINT uk_name UNIQUE (col1, col2) | नामित, प्रबंधन आसान |
PRIMARY KEY vs UNIQUE
- PRIMARY KEY: एक प्रति टेबल, NOT NULL अंतर्निहित, क्लस्टर्ड इंडेक्स (InnoDB)
- UNIQUE: एकाधिक संभव, NULL अनुमत (एकाधिक NULL), सेकेंडरी इंडेक्स
NULL और UNIQUE
MySQL में UNIQUE कंस्ट्रेंट एकाधिक NULL मान अनुमति देता है (प्रत्येक NULL को अलग माना जाता है)।