首页 > 编程笔记 > MySQL笔记 阅读:81

MySQL CREATE INDEX语句创建索引(非常详细,附带实例)

CREATE INDEX 语句可以在已经存在的表上添加索引。在 MySQL 中,CREATE INDEX 被映射到一个 ALTER TABLE 语句上,基本语法结构为:
CREATE [UNIQUE|FULLTEXT|SPATIAL] INDEX index_name ON table_name (col_name[length],…) [ASC | DESC]
CREATE INDEX 语句和 ALTER INDEX 语句的语法基本一样,只是关键字不同。

在这里,使用相同的表 book,假设该表中没有任何索引值,创建 book 表语句如下:
CREATE TABLE book
(
bookid INT NOT NULL,
bookname VARCHAR(255) NOT NULL,
authors VARCHAR(255) NOT NULL,
info VARCHAR(255) NULL,
comment VARCHAR(255) NULL,
year_publication YEAR NOT NULL
);
读者可以将该数据库中的 book 表删除,按上面的语句重新建立,然后进行下面的操作。

【实例】在 book 表中的 bookname 字段上建立名为 BkNameIdx 的普通索引,SQL 语句如下:
CREATE INDEX BkNameIdx ON book(bookname);
语句执行完毕之后,将在 book 表中创建名称为 BkNameIdx 的普通索引。读者可以使用 SHOW INDEX或者SHOW CREATE TABLE 语句查看 book 表中的索引,其索引内容与前面介绍的相同。

【实例】在 book 表的 bookId 字段上建立名称为 UniqidIdx 的唯一索引,SQL 语句如下:
CREATE UNIQUE INDEX UniqidIdx  ON book ( bookId );
语句执行完毕之后,将在 book 表中创建名称为 UniqidIdx 的唯一索引。

【实例】在 book 表的 comment 字段上建立单列索引,SQL 语句如下:
CREATE INDEX BkcmtIdx ON book(comment(50) );
语句执行完毕之后,将在 book 表的 comment 字段上建立一个名为 BkcmtIdx 的单列索引,长度为 50。

【实例】在 book 表的 authors 和 info 字段上建立组合索引,SQL 语句如下:
CREATE INDEX BkAuAndInfoIdx ON book ( authors(20),info(50) );
语句执行完毕之后,在 book 表的 authors 和 info 字段上建立了一个名为 BkAuAndInfoIdx 的组合索引,authors 的索引序号为 1、长度为 20,info 的索引序号为 2、长度为 50。

【实例】先删除表 t6,再重新建立表 t6,在 t6 表中使用 CREATE INDEX 语句,在 CHAR 类型的 info 字段上创建全文索引。
首先删除表 t6,并重新建立该表,可以输入下面的语句:
mysql> drop table t6;
Query OK, 0 rows affected (0.00 sec)
mysql> CREATE TABLE t6
   -> (
   -> id    INT NOT NULL,
   -> info  CHAR(255)
   -> ) ENGINE=MyISAM;
Query OK, 0 rows affected (0.00 sec)
使用 CREATE INDEX 在 t6 表的 info 字段上创建名称为 infoFTIdx 的全文索引:
CREATE FULLTEXT INDEX infoFTIdx ON t6(info);
语句执行完毕之后,将在 t6 表中创建名称为 infoFTIdx 的索引,该索引在 info 字段上创建,类型为 FULLTEXT,允许空值。

【实例】删除表 t7,重新创建表 t7,在 t7 表中使用 CREATE INDEX 语句,在空间数据类型字段 g 上创建名称为 spatIdx 的空间索引,操作如下:
首先删除表 t7,并重新建立该表,分别输入下面的语句:
mysql> drop table t7;
Query OK, 0 rows affected (0.00 sec)

mysql> CREATE TABLE t7 (g GEOMETRY NOT NULL) ENGINE=MyISAM;
Query OK, 0 rows affected (0.00 sec)
使用 CREATE INDEX 语句在表 t7 的 g 字段建立空间索引:
CREATE SPATIAL INDEX spatIdx ON t7 (g);
语句执行完毕之后,将在 t7 表中创建名称为 spatIdx 的空间索引,该索引在 g 字段上创建。

相关文章