SQL完整性约束

0. 前言

完整性约束保证授权用户对数据库所做的修改不会破坏数据的一致性。

1. 单个关系上的约束

1.1 not null 约束

not null声明禁止在该属性上插入空值。任何可能导致向一个声明为not null的属性插入空值的数据都会产生错误诊断信息。

1.2 unique约束

unique ( Aj1 , Aj2 ,…, Ajm )
unique声明指出 Aj1 , Aj2 ,…, Ajm 形成了一个候选码,即在关系中没有两个元组能在所有列出的属性上取值相同。
值得注意的是,候选码属性可以为null, 除非它们已被显示地声明为not null。

1.3 check子句

当应用于关系声明时,check(p)子句指定一个谓词P, 关系中的每个元组都必须满足谓词P。
根据SQL标准,check子句中的谓词可以是包含子查询在内的任意谓词。

1.4 参照完整性

我们常常希望保证在一个关系中给定属性集上的取值也在另一关系的特定属性集的取值中出现,这种情况被称为参照完整性(referential integrity)。
令关系 r1 r2 的属性集分别为 R1 R2 ,主码分别为 K1 K2 。如果要求对 r2 中的任意元组 t2 ,均存在 r1 中的元组 t1 使得 t1 . K1 = t2 . α ,我们称 R2 的子集 α 为参照关系 r1 K1 外码(foreign key)。

技术注解:一个关系模式 r1 可能在它的属性中包含另一个关系模式 r2 的主码。这个属性在 r1 上称作参照 r2 外码(foreign key)。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值