MySQL_索引

目录

一、普通索引

(1)创建索引

(2)修改表结构(添加索引)

(3)创建表的时候直接指定

(4)删除索引的语法

二、唯一索引

(1)创建索引

(2)修改表结构

(3)创建表的时候直接指定

三、使用ALTER 命令添加和删除索引

(一)有四种方式来添加数据表的索引:

(二)ALTER 命令删除主键 


一、普通索引

(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;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值