创建索引的方法有两种:创建表的同时创建索引,在已有表上创建索引。
方法一:创建表的同时创建索引。
使用这种方法创建索引时,可以一次性地创建一个表的多个索引(例如唯一性索引、普通索引、复合索引等),其语法格式与创建的语法格式基本相同(注意粗体字部分的代码)。
Create table 表名(
字段名1数据类型 [约束条件]
字段名字2 数据类型 [约束条件]
…
[unique][fulltext] index [索引名](字段名[(长度)] [asc|desc])
)engine=存储引擎类型 default charset=字符集类型
备注“[]”表示可选项,“[]”里面的“|”表示将各个选项隔开,“()”表示必选项。
长度表示索引中关键字的字符长度,关键字的值可以是数据库表中字段值得一部分,这种索引称为“前缀索引”。
Ase与desc为可选项参数,分别表示升序与降序,不过目前这两个可选项参数没有实际作用,索引中所有关键字的值均以升序存储。
使用下面的SQL语句创建了一个存储引擎为MyISAM、默认字符集为gbk的书籍book表,其中定义了主键isbn、书名name、简介brief_intorduction、价格price以及出版时间publish_time,并在该表分别定义了唯一性索引isbn_unique、普通索引name_idex、全文索引brief_fulltext以及复合索引complex_index
create table book(
isbn char (20) primary key,
name char(100) not null,
brifef_introduction text not noll,
price decimal(6,2),
publish_time date not null,
unique index isbn_unique (isbn),
index name_index (name (20)),
fulltext index brief_fulltext (name,brief_introduction),
index complex_index (price,publish_time),
) engine=MyISAM default charset=gbk;
方法二:在已有的表上创建索引
在已有的表上创建索引有两种语句格式,这种语句语法格式的共同特征是需要指导在哪个表上创建索引,语法格式分别如下:
语法格式一:
create[unique|fulltext]index 索引名 on 表名(字段名[(长度)] [ase|desc])
语法格式二:
alter table 表名 add[unique|fulltext]index 索引名(字段名[(长度)] [ase|desc])
例如,向课程course 表的课程描述description字段添加全文索引,可以使用下面SQL语句:
alter table coursr add fulltexr index description_fulltext (description);
该语句等效于:
Create fulltext index description on course (description);
删除表索引
SQL语句是:
drop index 索引名 on 表名