Mysql 简明教程

MySQL - Drop Index

MySQL 数据库中的 DROP 语句用于删除现有的数据库对象,例如表、索引、视图或过程。每当我们对任何数据库对象(如索引)使用 DROP 语句时,它都会与关联数据一起永久删除它们。

因此,我们可以使用两个不同的 SQL DROP 查询从数据库表中删除任何索引。

The MySQL DROP INDEX Statement

MySQL 中的 DROP INDEX 语句用于从表中删除索引。

Syntax

以下是使用 DROP INDEX 语句删除索引的语法 -

DROP INDEX index_name ON table_name;

Example

在此示例中,我们首先创建一个新表 CUSTOMERS ,并使用以下 CREATE TABLE 查询向其一个列 (AGE) 添加索引 -

CREATE TABLE CUSTOMERS (
   ID INT NOT NULL,
   NAME VARCHAR (20) NOT NULL,
   AGE INT NOT NULL,
   ADDRESS CHAR (25),
   SALARY DECIMAL (18, 2),
   PRIMARY KEY(ID),
   INDEX(AGE)
);

现在,在 CUSTOMERS 表上创建另一个索引。我们在此处使用 CREATE INDEX 语句 -

CREATE INDEX NAME_INDEX ON CUSTOMERS (Name);

DROP INDEX Query −

然后,使用以下查询删除上面创建的索引。

DROP INDEX NAME_INDEX ON CUSTOMERS;

Verification

要验证是否已删除索引,请使用以下 DESC 查询显示表定义 -

DESC CUSTOMERS;

正如我们从下表中看到的,NAME 列上的索引已删除。

The MySQL ALTER…​ DROP Statement

ALTER DROP 语句也可以用于在 MySQL 表中删除索引。这只是 DROP INDEX 语句的替代方案,因此它仅适用于表上存在的索引。

Syntax

以下是 SQL 中 DROP INDEX IF EXISTS 的语法:

ALTER TABLE table_name DROP INDEX index_name;

Example

我们来看另一个示例,使用 ALTER…​ DROP 命令删除 CUSTOMERS 表中的索引,如下所示 -

ALTER TABLE CUSTOMERS DROP INDEX AGE;

Verification

要验证是否已删除 AGE 列上的索引,请使用以下 DESC 查询显示表定义 -

DESC CUSTOMERS;

正如我们从下表中看到的,NAME 列上的索引已删除。

Dropping PRIMARY KEY or UNIQUE Constraint

MySQL 中的 DROP INDEX 语句通常不会删除 PRIMARY KEY 或 UNIQUE 约束之类的索引。要删除与这些约束关联的索引,我们需要使用 ALTER TABLE DROP 命令。

Syntax

以下是语法 -

ALTER TABLE table_name DROP constraint_name;

Example

在此示例中,我们使用以下查询删除 CUSTOMERS 表的 ID 列上存在的 PRIMARY KEY 约束 -

ALTER TABLE CUSTOMERS DROP PRIMARY KEY;

Verification

要验证是否已从表中删除主键约束,请使用 DESC 命令描述“temp”表,如下所示 -

DESC CUSTOMERS;

现在,主键约束终于被删除了!请看下表 -

Dropping an Index Using a Client Program

我们已经了解了如何使用 SQL 查询从 MySQL 数据库中删除索引。除此之外,我们还可以使用其他客户端程序来在 MySQL 数据库中执行删除索引操作。

Syntax

以下是使用各种编程语言从 MySQL 数据库中删除索引的语法 -

Example

以下是该操作在各种编程语言中的实现 −