头歌-MySQL开发技巧(索引与完整性)

索引

定义:

索引是根据表中一列或若干列按照一定的顺序创建的列值与记录行之间的对应关系表。
在列上创建了索引之后,查找数据是可以直接根据该列上的索引找到对应行的位置,从而快速找到数据。

分类:

  • 普通索引(INDEX):基本索引类型
  • 唯一性索引(UNIQUE):该列的所有值没有重复
  • 主键(PRIMARY KEY):一种唯一性索引,一个表只能有一个主键
  • 全文索引(FULLTEXT):只能在varchar或text类型上创建

语法格式:

创建
CREATE [UNIQUE|FULLTEXT|SPATIAL] INDEX 索引名称 ON 表名 { 字段名称[(长度)] [ASC|DESC]}
ALTER TABLE tbl_name ADD [UNIQUE|FULLTEXT|SPATIAL] INDEX 索引名称(字段名称[(长度)][ASC|DESC]);
查看索引
show index from 表名;
重命名索引
alter index 原索引名
	rename to 新索引名;
删除索引
drop index 索引名;

数据完整性

域完整性

域完整性又叫列完整性,主要是对一列数据进行约束。比如emp中限定sex的值只能为1和2中的一个,可以在创建表时将sex做以下定义:

sex int(1) check(sex='1' or sex='2')NOT NULL,

或者在所有字段定义完成后加一句:

constraint ch_sex check(sex='1' or sex='2')

通过修改表的方式创建约束:

alter table emp
	add(contraint ch_sex check(sex='1' or sex='2'));

删除约束:

alter table emp
	drop constraint ch_sex;

实体完整性

又叫做行完整性,要求每一行都有一个唯一的标识符。比如emp中的员工eid是唯一的,才能唯一确定某一人。通过unique约束和primary key约束可以实现实体完整性。
同样的,在创建表时对tel创建约束应该将tel定义为:

tel char(12) NOT NULL constraint un_tel unique,

通过修改表的方式创建约束:

alter table emp
	add constraint un_tel unique (tel);

参照完整性

又叫引用完整性,它保证主表和从表中的数据一致性,实现方式时定义外键与主键。

  • 从表不能引用主表不存在的键值
  • 主表中的值更改了,则从表中所有引用也要修改
  • 若要删除主表中的记录,应先删除从表中匹配的记录
创建时定义
字段名 字段类型(字段长度) NOT NULL references 主表名(外键),

eid char(6) NOT NULL refrences sal(eid),
修改表时定义
alter table emp
	add constraint sal_id foreign key(eid)
		references sal(eid);
  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值