如何在 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
广告