-
主键索引:设定为主键后数据库会自动建立索引,innodb为聚簇索引
-
单值索引:即一个索引只包含单个列,一个表可以有多个单列索引
-
唯一索引:索引列的值必须唯一,但允许有空值
-
复合索引:即一个索引包含多个列
CREATE TABLE customer (
id INT (10) UNSIGNED AUTO_INCREMENT,
customer_no VARCHAR (200),
customer_name VARCHAR (200),
PRIMARY KEY (id), # 主键索引
KEY idx_name (customer_name), # 单值索引
UNIQUE KEY uk_name (customer_name), # 唯一索引
KEY idx_no_name (customer_no, customer_name) # 复合索引
);
1. 单独建索引
(1)使用CREATE语句
CREATE [UNIQUE ] INDEX [indexName] ON table_name(column))
CREATE INDEX idx_customer_name ON customer(customer_name); # 单值索引
CREATE UNIQUE INDEX idx_customer_no ON customer(customer_no); # 唯一索引
CREATE INDEX idx_no_name ON customer(customer_no,customer_name); # 复合索引
(2)使用ALTER命令
该语句添加一个主键,这意味着索引值必须是唯一的,且不能为NULL。
ALTER TABLE tbl_name ADD PRIMARY KEY (column_list);
这条语句创建索引的值必须是唯一的(除了NULL外,NULL可能会出现多次)。
ALTER TABLE tbl_name ADD UNIQUE index_name (column_list);
添加普通索引,索引值可出现多次。
ALTER TABLE tbl_name ADD INDEX index_name (column_list);
该语句指定了索引为 FULLTEXT ,用于全文索引。
ALTER TABLE tbl_name ADD FULLTEXT index_name (column_list);
2. 删除索引
DROP INDEX [indexName] ON mytable;
(1)删除主键索引
ALTER TABLE customer drop PRIMARY KEY;
(2)删除单值、唯一、复合索引
DROP INDEX idx_customer_name on customer;
3. 查看索引
SHOW INDEX FROM table_name\G;
4. 修改主键索引
必须先删除掉(drop)原索引,再新建(add)索引