建立普通索引,即不添加 UNIQUE、FULLTEXT 等任何参数。.net
【例】建立表名为 score 的数据表,并在该表的 id 字段上创建索引,SQL 语句以下:code
CREATE table score( id int(11) AUTO_INCREMENT primary key not null, name varchar(50) not null, math int(5) not null, English int (5) not null, Chinese int (5) not null, index(id) );
此时在id字段上创建的普通索引名字为id,在id字段创建的,索引方法为BTREE,索引类型为normal
建立惟一索引时,使用 UNIQUE 参数进行约束。orm
【例】建立表名为 address 的数据表,并在该表的 id 字段上创建惟一索引,SQL 语句以下:blog
CREATE table address( id int(11) auto_increment primary key not null, name varchar(50), address varchar(200), UNIQUE INDEX address(id ASC) );
此时在id字段上创建的惟一索引,索引名字为address,索引方法BTREE为,索引类型为Unique
【例】建立名称为 telephone 的数据表,并指定在 tel 字段上创建名称为 tel_num 的单列索引,SQL 语句以下:索引
create table telephone( id int(11) primary key auto_increment not null, name varchar(50) not null, tel varchar(50) not null, index tel_num(tel(20)) );
此时在tel字段上创建的普通索引,索引名字为tel_num,索引方法为BTREE,索引类型为normal,索引取的是tel字段前20为字节创建索引
前缀索引没法使用覆盖索引
全文索引只能做用在 CHAR、VARCHAR、TEXT、类型的字段上。建立全文索引须要使用 FULLTEXT 参数进行约束。rem
【例】建立表名为 cards 的数据表,并在该表的 name 字段上创建全文索引,SQL 语句以下:get
create table cards( id int(11) auto_increment primary key not null, name varchar(50), number bigint(11), info varchar(50), FULLTEXT KEY cards_number(name) );
此时在name字段上创建的全文索引,索引名字为cards_number,索引方法为空(没有),索引类型为FULL TEXT
建立多列索引即指定表的多个字段便可实现。io
【例】建立名称为 information 的数据表,并指定 name 和 sex 为 多列索引,SQL 语句以下:table
create table information( inf_id int(11) auto_increment primary key not null, name varchar(50) not null, sex varchar(5) not null, birthday varchar(50) not null, index info(name,sex) );
此时在name,sex字段上创建的普通联合索引,索引名字为info,索引方法为BTREE,索引类型为normal
建立空间索引时,须要设置 SPATIAL 参数。一样,必须说明的是,只有 MyISAM 类型表支持该类型索引。并且,索引字段必须有非空约束。form
【例】建立一个名称为 list 的数据表,并建立一个名为 listinfo 的空间索引,SQL语句以下:
create table list( id int(11) primary key auto_increment not null, goods geometry not null, SPATIAL INDEX listinfo(goods) )engine=MyISAM;
goods 字段上已经创建名称为 listinfo 的空间索引,其中 goods 字段必须不能为空,且数据类型是 GEOMETRY,该类型是空间数据类型。空间类型不能用其余类型代替,不然在生成空间素引时会产生错误且不能正常建立该类型索引。
空间类型除了上述示例中提到的 GEOMETRY 类型外,还包括如 POINT、LINESTRING、POLYGON 等类型,这些空间教据类型在日常的操做中不多被用到。