mysql完整性详解及处理

实体完整性

  • 实体完整性:主码中的属性的值不能为空,不能重复
  • 列级约束,表级约束这种约束一个表里只能出现一种,且只能出现一次
  • 列级约束:定义单个属性为主码
create table Student
( Sno char(9) primary key, //列级约束
Sname char(20) not null,
Sage smallint
);
  • 表级约束:定义单个或多个属性为主码
create table Student
( Sno char(9),
Sname char(20) not null,
Sage smallint,
primary key(Sno,Sname) //表级约束
);

违约处理

  • 拒接插入记录或拒接对主码中属性的值的修改

补充: 在主码上建立索引,是为了避免对基本表进行全表扫描(该方法用来检查记录中的主码值是否为空)

参照完整性

  • 参照完整性:外码的值要么为空(如果允许)要么与被参照关系的主码相等
  • 在定义外码时,还要定义外码列是否允许空值
  • 表级约束:定义单个属性为外码
create table Student
( Sno char(9)  not null,
Sname char(20) not null,
Sage smallint,
primary key(Sno,Sname) 
//Sno是外码,参照表Student的主码Sno列
foreign key(Sno) references Student(Sno),
on  delete cascade //级联删除
foreign key(Sname) references Student(Sname)
on  update cascade //级联修改

);

违约处理

  • 拒绝(NO ACTION)执行
    不允许该操作执行(默认的)

  • 级联(CASCADE)操作
    当删除或修改被参照表的一个元组造成了与参照表的不一致,则删除或修改参照表中的所有造成不一致的元组

  • 设置为空值(SET-NULL)
    当删除或修改被参照表的一个元组时造成了不一致,则将参照表中的所有造成不一致的元组的对应属性设置为空值。

自定义完整性

  1. 属性上的约束
  • 列值非空(not null)
  • 列值唯一(unique)
  • 检查列值是否满足一个条件表达式(check)
create table Student
( Sno char(9) unique, //唯一
Sname char(20) not null, //非空
Sage smallint check(Sage <100)
);
  1. 元组上的约束
  • check语句不跟在属性后面,而是单独作为一句
create table Student
( Sno char(9),
Sname char(20) ,
Sex char(2),
Sage smallint ,
check (Sex='女' or Sname not like 'Ms.%')
);

违约处理

  • 不满足约束拒接执行

完整性约束命名与删除

  • 命名:constraint c1 check(Sex in (‘男’,‘女’)) //将该约束命名为c1

  • 删除: drop constraint c1 //删除约束c1

  • 修改(先删后加): add constraint c1 check(Sex in (‘男’,‘女’))

断言(考试不考)

  • create assertion c1 check(Sex in (‘男’,‘女’)) //创建断言
  • drop assertion c1 //删除断言c1
  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

柳衣白卿

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值