如何在 MySQL 表中刪除 UNIQUE 約束?


要從 MySQL 表中刪除 UNIQUE 約束,首先必須檢查表上 UNIQUE 約束建立的索引名稱。眾所周知,SHOW INDEX 語句用於此目的。“key_name”在 SHOW INDEX 語句的結果集中包含索引的名稱。現在,可以使用 DROP INDEX 語句或 ALTER TABLE 語句刪除 UNIQUE 約束。兩種語句的語法如下:

語法

DROP INDEX index_name ON table_name;
OR
ALTER TABLE table_name DROP INDEX index_name;

示例

假設我們有一個名為“empl”的表,該表在列“empno”上具有 UNIQUE 約束。可以如下檢查索引名稱:

mysql> Show Index from empl\G
*************************** 1. row ***************************
Table: empl
Non_unique: 0
Key_name: empno
Seq_in_index: 1
Column_name: empno
Collation: A
Cardinality: 0
Sub_part: NULL
Packed: NULL
Null: YES
Index_type: BTREE
Comment:
Index_comment:
1 row in set (0.02 sec)

現在,要刪除 UNIQUE 約束,可以編寫以下查詢:

mysql> ALTER TABLE empl DROP INDEX empno;
Query OK, 0 rows affected (0.26 sec)
Records: 0 Duplicates: 0 Warnings: 0

下面的查詢結果將顯示列“empno”上沒有 UNIQUE 約束:

mysql> describe empl;

+--------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+--------+-------------+------+-----+---------+-------+
| empno | int(11) | YES | | NULL | |
| F_name | varchar(20) | YES | | NULL | |
+--------+-------------+------+-----+---------+-------+

2 rows in set (0.04 sec)

即使執行 SHOW INDEX from empl 查詢,MySQL 也會返回空集,如下所示:

mysql> Show index from empl;
Empty set (0.00 sec)

也可以使用 DROP INDEX 語句從“empl”表中刪除 UNIQUE 約束,如下所示:

mysql> DROP INDEX empno on empl;
Query OK, 0 rows affected (0.17 sec)
Records: 0 Duplicates: 0 Warnings: 0

更新於:2020年1月28日

5K+ 次瀏覽

啟動您的職業生涯

完成課程獲得認證

開始學習
廣告