数据库的完整性是指数据的正确性和相容性
实体完整性
- 列级定义主码:在列定义后面进行定义完整性
- 表级定义主码:在末尾定义(当定义多属性时只能表级定义)
- primary key();
参照完整性
foreign key() references <表名>()
- 当出现冲突时,系统可以采用:
1.拒绝(no action)执行
2.级联(cascade)操作
3.设置为空值
foreign key() references student()
on delete cascade //当删除student表中的元组时,级联更新sc表中相应的元组
on update cascade //当更新student表中的元组时,级联更新sc表中相应的元组
on delete no action //当删除student表中的元组时,拒绝删除
用户定义的完整性
not null(列值非空)
unique (列值唯一)
check (检查列值是否满足一个条件表达式)
check (sex in('男','女'))
check (grade>=0 and grade<=100)
check(sex='女' or name not like '%_') //定义元组中的约束
完整性约束命名子句
constraint <完整性约束条件名> <完整性约束条件>
完整性约束没有修改只有删除(drop)和增加(add)
alter table student add constraint a check()
alter table student drop constraint a
触发器
触发器(trigger)是用户定义在关系表上的一类由事件驱动的特殊过程
- 定义触发器
触发器又叫做事件 - 条件 - 动作规则
create trigger <触发器名>
on <表名> for <触发事件>
as