1. 使用 ALTER TABLE 语句删除索引
语法格式:
ALTER TABLE table_name DROP INDEX index_name;
【例】删除 score 表中的名为 id 的普通索引。
首先查看 score 表
-------------------------+
| Table | Create Table |
+-------+-----------------------------------------------------+
| score | CREATE TABLE `score` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(50) NOT NULL,
`math` int(5) NOT NULL,
`English` int(5) NOT NULL,
`Chinese` int(5) NOT NULL,
PRIMARY KEY (`id`),
KEY `id` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 |
+-------+----------------------------------------
输入删除语句:
mysql> ALTER TABLE score drop INDEX id;
Query OK, 0 rows affected (0.65 sec)
查看是否被删除:
----------+
| Table | Create Table |
+-------+---------------------------------------------------------+
| score | CREATE TABLE `score` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(50) NOT NULL,
`math` int(5) NOT NULL,
`English` int(5) NOT NULL,
`Chinese` int(5) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8
【注】 添加 AUTO_INCREMENT 约束字段的唯一索引不能被删除
2. 使用 DROP INDEX 语句删除索引
语法格式:
DROP INDEX index_name ON table_name;
【例】 删除 address 表中
查看 address 表
----+
| Table | Create Table |
+---------+-------------------------------------------------------+
| address | CREATE TABLE `address` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(50) DEFAULT NULL,
`address` varchar(200) DEFAULT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `address` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 |
输入删除语句:
mysql> DROP INDEX address ON address;
Query OK, 0 rows affected (0.20 sec)
查看是否被删除:
| Table | Create Table |
+---------+---------------------------------------------------------------+
| address | CREATE TABLE `address` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(50) DEFAULT NULL,
`address` varchar(200) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 |
删除表中的列时,如果要删除的列为索引的组成部分,则该列也会从索引中删除。如果组成索引的所有列都被删除,则整个索引将被删除。
【注】参考于清华大学出版社《MySQL数据库应用案例课堂》2016年1月第1版