MySQL删除索引的2种方式(附带实例)

分类: 365Bet官方 时间: 2025-08-16 04:33:14 作者: admin 阅读: 508

MySQL 中删除索引使用 ALTER TABLE 或者 DROP INDEX 语句,两者可实现相同的功能,DROP INDEX 语句在内部被映射到一个 ALTER TABLE 语句中。

使用ALTER TABLE删除索引

使用 ALTER TABLE 删除索引的基本语法格式如下:

ALTER TABLE table_name DROP INDEX index_name;

【实例】删除表 book 中名称为“UniqidIdx”的唯一索引。

首先查看表 book 中是否有名称为“UniqidIdx”的索引,SQL 语句如下:

mysql> SHOW CREATE table book \G

*** 1. row ***

Table: book

CREATE Table: CREATE TABLE `book` (

`bookid` int NOT NULL,

`bookname` varchar(255) NOT NULL,

`authors` varchar(255) NOT NULL,

`info` varchar(255) DEFAULT NULL,

`year_publication` year(4) NOT NULL,

UNIQUE KEY `UniqidIdx` (`bookid`),

KEY `BkNameIdx` (`bookname`),

KEY `BkAuAndInfoIdx` (`authors`(20),`info`(50))

) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci

从查询结果中可以看到,表 book 中有名称为“UniqidIdx”的唯一索引,该索引在 bookid 字段上创建。

下面删除该索引,SQL 语句如下:

mysql> ALTER TABLE book DROP INDEX UniqidIdx;

语句执行完毕,使用 SHOW 语句查看索引是否被删除:

mysql> SHOW CREATE table book \G

*** 1. row ***

Table: book

CREATE Table: CREATE TABLE `book` (

`bookid` int NOT NULL,

`bookname` varchar(255) NOT NULL,

`authors` varchar(255) NOT NULL,

`info` varchar(255) DEFAULT NULL,

`year_publication` year(4) NOT NULL,

KEY `BkNameIdx` (`bookname`),

KEY `BkAuAndInfoIdx` (`authors`(20),`info`(50))

) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci

由结果可以看到,表 book 中已经没有名称为“uniqidIdx”的唯一索引,说明删除索引成功。

添加 AUTO_INCREMENT 约束字段的唯一索引不能被删除。

使用DROP INDEX语句删除索引

使用 DROP INDEX 删除索引的基本语法格式如下:

DROP INDEX index_name ON table_name;

【实例】删除表 book 中名称为“BkAuAndInfoIdx”的组合索引,SQL 语句如下:

mysql> DROP INDEX BkAuAndInfoIdx ON book;

语句执行完毕,使用 SHOW 语句查看索引是否被删除:

mysql> SHOW CREATE table book \G

*** 1. row ***

Table: book

CREATE Table: CREATE TABLE `book` (

`bookid` int NOT NULL,

`bookname` varchar(255) NOT NULL,

`authors` varchar(255) NOT NULL,

`info` varchar(255) DEFAULT NULL,

`year_publication` year(4) NOT NULL,

KEY `BkNameIdx` (`bookname`)

) ENGINE=InnoDB DEFAULT CHARSET=utf8

1 row in set (0.00 sec)

可以看到,表 book 中已经没有名称为“BkAuAndInfoIdx”的组合索引,说明删除索引成功。

删除表中的列时,如果要删除的列为索引的组成部分,则该列也会从索引中删除。如果组成索引的所有列都被删除,则整个索引将被删除。

相关文章

365bet网址主页

黑鹳:鸟中大熊猫、六盘山孤舞者

365ba

云南备案需要多久时间

365ba

科二:记不清方向盘打了几圈?该怎么回?10张图让你弄懂