mysql学习笔记--数据完整性
一、数据完整性包括:
1. 域完整性
2. 实体完整性
3. 引用完整性
二、保证实体完整性
1. 主键约束
2. 唯一约束
3. 自动增长列
三、保证域完整性
1. 数据类型约束
2. 非空约束
3. 默认值约束
四、保证引用完整性
1. 外键约束:从表的公共字段是主表的外键
五、保证自定义完整性
六、引用完整性
1. 主表和从表
两个表建立关系(两个表只要有公共字段就有关系),一个称为主表,一个称为从表。
2. 外键约束可以实现:
a. 主表中没有的,从表中不允许插入
b. 从表中有的,主表中不允许删除
c. 不能更改主表中的值而导致从表中的记录孤立存在
d. 先删从表,再删主表
3. 外键(foreign key)
a. 外键:从表中的公共字段,公共字段的名字可以不一样,但数据类型必须一样。
b. 外键约束用来保证引用完整性。
4. 添加外键
a. 创建表时添加外键
create table t1(
id int primary key,
name varchar(10) not null
);
create table t2(
stuNo int primary key,
marks tinyint unsigned,
foreign key(stuNo) reference t1(id)
);
b. 修改表时创建外键
alter table t7 add foreign key(stuNo) references t6(id);
c. 注意:要创建外键必须是innodb引擎,myisam不支持外键
5. 删除外键
alter table t1 drop foreign key 外键名;
6. 外键操作
a. 严格操作(上面讲的操作)
b.置空操作(set null):如果主表记录删除或更新,从表置空
c. 级联操作(cascade):如果主表记录删除或更新,从表级联
d. 一般来说:主表删除的时候,从表置空操作,主表更新的时候,从表级联操作。
e. 语法:foreign key(外键) references 主表(关键字段)[主表删除时候的动作][主表更新时候的动作]
foreign key(stuNo) references t1(id) on delete set null on update cascade