目录
一、普通索引
(1)创建索引
CREATE INDEX indexName ON table_name (column_name1,column_name2……)
如果是CHAR,VARCHAR类型,length可以小于字段实际长度;如果是BLOB和TEXT类型,必须指定 length。
(2)修改表结构(添加索引)
ALTER table tableName ADD INDEX indexName(column_name1,column_name2……)
注:(1)与(2)的区别:
1、CREATE创建索引必须提供索引名称,而ALTER方式可以不提供,则MySQL会自动为你创建索引名称
2、CREATE 方式创建索引,一次只能创建一个索引。ALTER方式可以一次创建多个索引,且独有创建PRIMARY KEY的特性,类似如下SQL语句,
ALTER TABLE tableName ADD PRIMARY KEY(id), ADD INDEX index_name_1(field_1,field_2), ADD INDEX index_name_2(field_3,field_4,field_5);
(3)创建表的时候直接指定
CREATE TABLE mytable( ID INT NOT NULL, username VARCHAR(16) NOT NULL, INDEX [indexName] (username(length)) );
补充:
在创建数据表时创建索引的基本语法结构:
CREATE TABLE table_name(
属性名 数据类型[约束条件],
……
属性名 数据类型
[UNIQUE | FULLTEXT | SPATIAL ] INDEX | KEY
[ 别名 ] ( 属性名1 [( 长度 )] [ ASC | DESC )
);
(4)删除索引的语法
DROP INDEX [indexName] ON mytable;
二、唯一索引
它与前面的普通索引类似,不同的就是:索引列的值必须唯一,但允许有空值。如果是组合索引,则列值的组合必须唯一。它有以下几种创建方式:
(1)创建索引
CREATE UNIQUE INDEX indexName ON mytable(username(length))
(2)修改表结构
ALTER table mytable ADD UNIQUE [indexName] (username(length))
(3)创建表的时候直接指定
CREATE TABLE mytable( ID INT NOT NULL, username VARCHAR(16) NOT NULL, UNIQUE [indexName] (username(length)) );
三、使用ALTER 命令添加和删除索引
(一)有四种方式来添加数据表的索引:
(1)添加一个主键,索引值必须是唯一的,且不能为NULL。
ALTER TABLE tbl_name ADD PRIMARY KEY (column_list)
(2)添加普通索引,索引值可出现多次
ALTER TABLE tbl_name ADD INDEX index_name (column_list)
(3)创建唯一索引(除了NULL外,NULL可能会出现多次)
ALTER TABLE tbl_name ADD UNIQUE index_name (column_list)
(4)创建全文索引
ALTER TABLE tbl_name ADD FULLTEXT index_name (column_list)
(二)ALTER 命令删除主键
ALTER TABLE testalter_tbl DROP PRIMARY KEY
方法一:create
create index idx_duration on examination_info(duration);
create unique index uniq_idx_exam_id on examination_info(exam_id);
create fulltext index full_idx_tag on examination_info(tag);
方法二:alter
alter table examination_info add index idx_duration(duration);
alter table examination_info add unique uniq_idx_exam_id(exam_id);
alter table examination_info add fulltext full_idx_tag(tag);
请删除examination_info表上的唯一索引uniq_idx_exam_id和全文索引full_idx_tag。
drop index uniq_idx_exam_id on examination_info;
drop index full_idx_tag on examination_info;