Mysql索引类型及操作

一、索引主要类型

PRIMARY KEY(主键索引)

UNIQUE(唯一索引)

INDEX(普通索引)

FULLTEXT(全文索引)

索引创建的通用语法

alter table 表名 add index 索引名称(数据库字段名称);

PRIMARY KEY(主键索引)

alter table 'table_name' add primary key (column);

UNIQUE(唯一索引)

alter table 'table_name' add unique (column);

INDEX(普通索引)

alter table 'table_name' add index 'index_name' (column1、column2、....);

FULLTEXT(全文索引)

alter table 'table_name' add fulltext (column);

二、各类索引创建语法

1.普通索引

这是最基本的索引,它没有任何限制。它有以下几种创建方式:

(1)创建索引:create index 'indexname' on 'tablename'(tableColumns(length));

    如果是char,varchar类型,length可以小于字段实际长度;如果是blob和text类型,必须指定length,下同。

(2)修改表结构:alter table 'tablename' add  index [indexName] ON ('tablecolumns');

(3)创建表的时候直接指定:create table 'tablename' ( […], index ['indexName'] ('tablecolumns');

2.唯一索引

它与前面的"普通索引"类似,不同的就是:索引列的值必须唯一,但允许有空值。如果是组合索引,则列值的组合必须唯一。它有以下几种创建方式:

(1)创建索引:create unique index 'indexname' on 'tablename'('tablecolumns');

(2)修改表结构:alter table 'tablename' add  unique ['indexname'] on ('tablecolumns');

(3)创建表的时候直接指定:create table 'tablename' ( […], unique ['indexname'] ('tablecolumns') ;

3、主键索引

它是在唯一索引索引的基础上加了非空限制:unique+not null(唯一,非空)

(1)修改表结构:alter table 'tablename' add  primary key('tableColumns');

(2)创建表的时候直接指定:create table 'tablename' ( […] primary key ) ;

4、全文索引

MySQL 5.6 及以后的版本,MyISAM 和 InnoDB 存储引擎均支持全文索引;

只有字段的数据类型为 char、varchar、text 及其系列才可以建全文索引。它有以下几种创建方式:

(1)创建索引:create fulltext index 'indexname' on 'tablename'('tablecolumns');

(2)修改表结构:alter table 'tablename' add  fulltext index ('tablecolumns');

(3)创建表的时候直接指定:create table 'tablename' ( […] fulltext key ['indexname'] ('tablecolumns') ;

5、auto_increment

是自动增加,只能修饰数值类型的,一个表中只能有一个,而且这个字段必须是索引  

一直是从记录中的最大值往上递加,即使是把记录全部删除还会从最后的标记处增加。创建方式:

(1)创建自增:create table 'tablename'([…] auto_increment));

三、索引的删除

索引删除的通用语法

alter table 表名 drop index 索引名称(数据库字段名称);

PRIMARY KEY(主键索引)

alter table 'table_name' drop primary key;

UNIQUE(唯一索引)

alter table 'table_name' drop index 'index_name';

INDEX(普通索引)

alter table 'table_name' drop index 'index_name' ;

drop index 'index_name' on 'tablename';

FULLTEXT(全文索引)

alter table 'table_name' drop index 'index_name' ;

drop index 'index_name' on 'tablename';

NOT NULL(非空约束)

alter table 'table_name' modify 'columnname' 'datatype' not null;

猜你喜欢

转载自blog.csdn.net/zll4859291/article/details/129924914