技术栈

主页 > 数据库 >

MySQL删除索引的两种方法

技术栈 - 中国领先的IT技术门户

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 |

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

责任编辑:admin  二维码分享:
本文标签: NULLidaddressint删除name