如何為現有表(帶非唯一行)新增唯一鍵?


藉助 alter 命令,你可以為現有表新增唯一鍵。語法如下 −

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

為了理解上述概念,讓我們建立一個包含一些列的表。建立表的查詢 −

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

現在,你可以檢查該表是否具有任何唯一約束。檢查唯一約束的查詢如下 −

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)

現在,你可以根據上述語法新增唯一鍵。我們正在為 MovieId 列新增唯一鍵。查詢如下 −

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

讓我們檢視整個表和列 MovieId,以檢查它是否有唯一鍵。

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)

上述輸出顯示“UNI”,這意味著“MovieId”欄位具有唯一鍵。

更新於: 25-Jun-2020

684 次瀏覽

開啟你的 職業生涯

完成課程即可獲得認證

開始
廣告
© . All rights reserved.