一、索引概述
主索引:primary key
唯一索引:unique
普通索引:index
创建索引:
1.建立数据表的同时建立索引 命令格式:
CREATE TABLE table_name
([col_name data_type]
[PRIMARY|UNIQUE][|INDEX|KEY]
[index_name] (index_col_name [length])
[ASC | DESC])
table_name数据表的名称
primary主索引 unique唯一索引
index_name索引名
index_col_name索引列的名称
2.在已有数据表上建立索引
ALTER TABLE tbl_name ADD PRIMARY KEY (column_list):该语句添加一个主键,这意味着索引值必须是唯一的,且不能为NULL。ALTER TABLE tbl_name ADD UNIQUE index_name (column_list):这条语句创建索引的值必须是唯一的(除了NULL外,NULL可能会出现多次)。ALTER TABLE tbl_name ADD INDEX index_name (column_list):添加普通索引,索引值可出现多次。alter table 表名 add [UNIQUE | PRIMARY KEY | INDEX] [索引名] (列名 [排序方式]);
查看索引:
show index from 表名 ;
删除索引:
drop index 索引名 on 表名 ;
拓展:
KEY
key 是数据库的物理结构,它包含两层意义,一是约束(偏重于约束和规范数据库的结构完整性),二是索引(辅助查询用的)。包括primary key, unique key, foreign key 等。
primary key
有两个作用,一是约束作用(constraint),用来规范一个存储主键和唯一性,但同时也在此key上建立了一个index;
unique key 也有两个作用,一是约束作用(constraint),规范数据的唯一性,但同时也在这个key上建立了一个index;
foreign key也有两个作用,一是约束作用(constraint),规范数据的引用完整性,但同时也在这个key上建立了一个index;
*UNIQUE KEY和PRIMARY KEY有什么区别
PRIMARY KEY的1个或多个列必须为NOT NULL,如果列为NULL,在增加PRIMARY KEY时,列自动更改为NOT NULL。UNIQUE KEY 对列没有此要求
一个表只能有一个PRIMARY KEY,但可以有多个UNIQUE KEY
案例一:
建立数据表的同时并建立索引
在sale数据库中,建立供应商数据表 gys,包括供应商号gysh 字符型4位、公司名称 可变长字符型20位、电话 可变长字符型11位、地址 可变长字符型20位、联系人 可变长字符型4位、手机 字符型11位 字段,同时根据供应商号字段建立主索引。 按行的方式显示gyh数据表的索引
use sale;create table gyh(gysh char(4),gsmc varchar(20),dh varchar(11),dz varchar(20),lxr varchar(4),sj char(11),primary key gysh(gysh));show index from gyh;
案例二:
在已有的数据表建立索引
在xsdmx数据表根据销售单编号xsdh和序号xh两个字段建立主索引xsdxh
在xsdmx数据表根据商品编号sph字段建立普通索引sphsy
在商品sp数据表根据商品名spm字段建立唯一索引spmsy
use sale;#第一题alter table xsdmx add primary key(xsdh,xh);#第二题alter table xsdmx add index sphsy(sph);#第三题alter table sp add unique spmsy(spm);#查看索引show index in xsdmx\g;show index in sp\g;
案例三:
删除索引
删除sp商品数据表的索引spmsy
use sale;drop index spmsy on sp;#查看索引show index in sp\g;