索引
定义:
索引是根据表中一列或若干列按照一定的顺序创建的列值与记录行之间的对应关系表。
在列上创建了索引之后,查找数据是可以直接根据该列上的索引找到对应行的位置,从而快速找到数据。
分类:
- 普通索引(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);