Computer >> Máy Tính >  >> Lập trình >> MySQL

Làm cách nào để thêm khóa duy nhất vào bảng hiện có (với các hàng không phải là duy nhất)?

Bạn có thể thêm khóa duy nhất vào bảng hiện có với sự trợ giúp của lệnh thay đổi. Cú pháp như sau -

ALTER TABLE yourTableName ADD CONSTRAINT yourConstraintName UNIQUE(yourColumnName1,yourColumnName2,............N);

Để hiểu khái niệm trên, chúng ta hãy tạo một bảng với một số cột. Truy vấn tạo bảng -

mysql> create table MovieCollectionDemo
   −> (
      −> MovieId int,
      −> MovieDirectorName varchar(200),
      −> NumberOfSongs int unsigned
   −> );
Query OK, 0 rows affected (0.62 sec)

Bây giờ bạn có thể kiểm tra bảng không có bất kỳ ràng buộc duy nhất nào. Truy vấn để kiểm tra ràng buộc duy nhất như sau -

mysql> desc MovieCollectionDemo;

Sau đây là kết quả -

+-------------------+------------------+------+-----+---------+-------+
| 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)

Bây giờ bạn có thể thêm khóa duy nhất từ ​​cú pháp trên. Chúng tôi đang thêm khóa duy nhất trên cột MovieId. Truy vấn như sau -

mysql> alter table MovieCollectionDemo add constraint uni_moviecollectio unique(MovieId);
Query OK, 0 rows affected (0.46 sec)
Records: 0 Duplicates: 0 Warnings: 0

Chúng ta hãy xem toàn bộ bảng và cột MovieId để kiểm tra xem nó có khóa duy nhất hay không.

mysql> desc MovieCollectionDemo;

Sau đây là kết quả -

+-------------------+------------------+------+-----+---------+-------+
| 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)

Kết quả ở trên hiển thị “UNI”, có nghĩa là trường “MovieId” có Khóa duy nhất.