MySQL 如何从MySQL表中删除UNIQUE约束?
要从MySQL表中删除UNIQUE约束,首先必须检查表上UNIQUE约束创建的索引的名称。我们知道SHOW INDEX语句用于此目的。 SHOW INDEX语句的结果集中的“ key_name ”包含索引的名称。现在可以使用DROP INDEX语句或ALTER TABLE语句来删除UNIQUE约束。这两个语句的语法如下:
阅读更多:MySQL 教程
语法
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