ALTER TABLE ... ADD CONSTRAINT UNIQUE
MySQL में मौजूदा टेबल पर यूनिक कंस्ट्रेंट (Unique Key) जोड़ने के लिए ALTER TABLE के साथ ADD CONSTRAINT ... UNIQUE का उपयोग करें।
सिंटैक्स
ALTER TABLE yourTableName
ADD CONSTRAINT yourConstraintName UNIQUE(yourColumnName1, yourColumnName2, ...);
उदाहरण: MovieId पर यूनिक की
1. टेबल बनाएं
mysql> CREATE TABLE MovieCollectionDemo (
-> MovieId INT,
-> MovieDirectorName VARCHAR(200),
-> NumberOfSongs INT UNSIGNED
-> );
Query OK, 0 rows affected (0.62 sec)
2. वर्तमान संरचना जांचें
mysql> DESC MovieCollectionDemo;
+-------------------+------------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------------------+------------------+------+-----+---------+-------+
| MovieId | int(11) | YES | | NULL | |
| MovieDirectorName | varchar(200) | YES | | NULL | |
| NumberOfSongs | int(10) unsigned | YES | | NULL | |
+-------------------+------------------+------+-----+---------+-------+
3 rows in set (0.00 sec)
3. यूनिक कंस्ट्रेंट जोड़ें
mysql> ALTER TABLE MovieCollectionDemo
-> ADD CONSTRAINT uni_moviecollectio UNIQUE(MovieId);
Query OK, 0 rows affected (0.46 sec)
Records: 0 Duplicates: 0 Warnings: 0
4. पुष्टि करें
mysql> DESC MovieCollectionDemo;
+-------------------+------------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------------------+------------------+------+-----+---------+-------+
| MovieId | int(11) | YES | UNI | NULL | |
| MovieDirectorName | varchar(200) | YES | | NULL | |
| NumberOfSongs | int(10) unsigned | YES | | NULL | |
+-------------------+------------------+------+-----+---------+-------+
3 rows in set (0.02 sec)
परिणाम: Key कॉलम में UNI दिख रहा है - यूनिक की सफलतापूर्वक जोड़ दी गई।
⚠️ महत्वपूर्ण चेतावनी: डुप्लिकेट डेटा
यदि टेबल में पहले से डुप्लिकेट मान हैं, तो यह कमांड **विफल** होगी:
ERROR 1062 (23000): Duplicate entry '123' for key 'uni_moviecollectio'
समाधान: डुप्लिकेट हटाकर यूनिक की जोड़ें
-- 1. डुप्लिकेट पहचानें
SELECT MovieId, COUNT(*)
FROM MovieCollectionDemo
GROUP BY MovieId
HAVING COUNT(*) > 1;
-- 2. डुप्लिकेट हटाएं (एक रखें)
DELETE t1 FROM MovieCollectionDemo t1
INNER JOIN MovieCollectionDemo t2
WHERE t1.MovieId = t2.MovieId AND t1.id < t2.id;
-- 3. फिर यूनिक की जोड़ें
ALTER TABLE MovieCollectionDemo ADD CONSTRAINT uni_moviecollectio UNIQUE(MovieId);
मल्टी-कॉलम यूनिक की
ALTER TABLE MovieCollectionDemo
ADD CONSTRAINT uni_movie_director UNIQUE(MovieId, MovieDirectorName);