在 MySQL 中,可以通过 CREATE
, ALTER
, 和 DROP
语句来添加、修改和删除索引。
1. 添加索引:
1.1 添加表级索引:
-- 添加单列索引
CREATE INDEX index_name ON table_name (column_name);
-- 添加多列索引
CREATE INDEX index_name ON table_name (column1, column2, ...);
1.2 添加唯一索引:
-- 添加唯一单列索引
CREATE UNIQUE INDEX index_name ON table_name (column_name);
-- 添加唯一多列索引
CREATE UNIQUE INDEX index_name ON table_name (column1, column2, ...);
2. 修改索引:
在 MySQL 中,通常情况下,对于已存在的表,只能添加新索引,不能直接修改现有索引的定义。如果需要修改索引,一般的做法是先删除原有索引,然后重新创建。
3. 删除索引:
3.1 删除表级索引:
-- 删除单列索引
DROP INDEX index_name ON table_name;
-- 删除多列索引
DROP INDEX index_name ON table_name;
3.2 删除唯一索引:
-- 删除唯一单列索引
DROP INDEX index_name ON table_name;
-- 删除唯一多列索引
DROP INDEX index_name ON table_name;
请注意,如果要删除的索引是表的主键(PRIMARY KEY),则应使用 ALTER TABLE
语句。
示例:
假设有一个表 example_table
,包含列 id
、name
、age
,以下是添加、修改和删除索引的示例:
添加索引:
-- 添加单列索引
CREATE INDEX idx_name ON example_table (name);
-- 添加多列索引
CREATE INDEX idx_name_age ON example_table (name, age);
-- 添加唯一单列索引
CREATE UNIQUE INDEX idx_id ON example_table (id);
-- 添加唯一多列索引
CREATE UNIQUE INDEX idx_name_age_unique ON example_table (name, age);
删除索引:
-- 删除单列索引
DROP INDEX idx_name ON example_table;
-- 删除多列索引
DROP INDEX idx_name_age ON example_table;
-- 删除唯一单列索引
DROP INDEX idx_id ON example_table;
-- 删除唯一多列索引
DROP INDEX idx_name_age_unique ON example_table;
这些语句可以根据表的需求进行调整,并确保在修改表结构时注意备份数据以防止数据丢失。