1. 使用 ALTER TABLE 语句创建索引
语法如下:
ALTER TABLE table_name ADD [UNIQUE | FULLTEXT | SPATIAL ] [ INDEX | KEY ]
[ index_name] ( col_name [length],…) [ASC | DESC]
index_name: 索引名称,该参数作用是给用户创建的索引赋予新的名称。
table name: 表名,即指定创建索引的表名称。
UNIQUE | FULLTEXT | SPATIAL 为可选参数,用于指定索引类型,分别表示唯一索引、全文索引、空间索引。
col_name: 指定索引对应的字段名称。该字段必须已经预存在用户想要操作的数据表中,如果该数据表中不存在用户指定的字段,则系统会提示异常。
length: 为可选参数,用于指定索引长度。
ASC 和 DESC 参数用于指定数据表的排序顺序。【例】 在 score 表的 id 字段上建立,名为 id 的普通索引。SQL语句如下:
mysql> ALTER TABLE score ADD INDEX id (id(4));
Query OK, 0 rows affected (0.41 sec)
使用 SHOW INDEX 语句查看表中的索引:
mysql> SHOW INDEX FROM score \G
*************************** 1. row ***************************
Table: score
Non_unique: 0
Key_name: PRIMARY
Seq_in_index: 1
Column_name: id
Collation: A
Cardinality: 0
Sub_part: NULL
Packed: NULL
Null:
Index_type: BTREE
Comment:
Index_comment:
*************************** 2. row ***************************
Table: score
Non_unique: 1
Key_name: id
Seq_in_index: 1
Column_name: id
Collation: A
Cardinality: 0
Sub_part: NULL
Packed: NULL
Null:
Index_type: BTREE
Comment:
Index_comment:
2 rows in set (0.00 sec)
主要参数含义:
1. Table: 表示创建索引的表。
2. Non_unique: 表示索引非唯一,1代表非唯 一索引, 0代表唯一索引。
3. Key_name: 表示索引的名称。
4. Seq_in_index: 表示该字段在索引中的位置,单列索引该值为1,组合案引为每个字段在索引定义中的顺序。
5. Column_name: 表示定义索引的列字段。
6. Sub_part: 表示索引的长度。
7. Null: 表示该字段是否能为空值。
8. Index_type: 表示索引类型。
2. 使用 CREATE INDEX 创建索引
语法如下:
CERATE [UNIQUE | FULLTEXT | SPATIAL ] INDEX index_name
ON table_name ( col_name [length] , … ) [ASC | DESC]
【例】在 address 表中 id 字段上建立名为 id 的唯一索引。
mysql> show create table 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`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 |
建立索引的SQL语句:
mysql> CREATE UNIQUE INDEX id
-> ON address (id);
Query OK, 0 rows affected (0.33 sec)
查看创建结果:
mysql> show create table 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 `id` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 |
【注】参考于清华大学出版社《MySQL数据库应用案例课堂》2016年1月第1版