Sql索引(primary key、unique、index)

一、索引概述

主索引: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 表名 add [UNIQUE | PRIMARY KEY | INDEX] [索引名] (列名 [排序方式]);

  • 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): 添加普通索引,索引值可出现多次。

查看索引:

        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;

你可能感兴趣的:(mysql,sql,数据库,mysql)