如何从 MySQL 表中删除 UNIQUE 约束?

mysqlmysqli database

要从 MySQL 表中删除 UNIQUE 约束,首先,我们必须检查表上 UNIQUE 约束创建的索引的名称。我们知道 SHOW INDEX 语句就是用于此目的。SHOW INDEX 语句结果集中的 ‘key_name’ 包含索引的名称。现在,无论是借助 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

相关文章