【数据库原理复习】ch4 完整性约束 SQL定义

基本概念

完整性约束主要包括

  • 实体完整性
  • 参照完整性
  • 用户自定义完整性

实体完整性

关系模型中实体完整性通常在建表时候添加primary key完成

# primary key定义
create table tab(
	xxxx   primary key,				# 列级完整性约束定义
	xxxx,
	xxxx....
)

create table tab(
	xxx,
	xxx,
	xxx,
	primary key (var1, var2,.....)	# 表级完整性约束定义,如果有多个只能在表级定义

)
  • 主键必须唯一,如果不唯一拒绝插入或修改
  • 主键各个属性不允许为空,只要有一个为空拒绝插入或修改

保证主键上述两种特点,DBMS主要采取以下方式:

  • 全表扫描
  • 索引

参照完整性

关系模型用foreign key保证

# 外键定义
create table sc(
	xxxx,
	xxxx,
	xxxx,
	foreign key (var1) references xx_tab(var2)	# 在表级定义参照完整性
		on delete cascade 						# 删除时候级联(被参照表)
		on update no action						# 在更新时候拒绝(被参照表)
	
)

违规处理

  • 修改参照表只要涉及外键字段,例如插入元组、修改外码值,都会直接拒绝
  • 对于被参照表,如果是删除元组或者修改主码值,可以拒绝可以级联可以设置为空值

用户自定义完整性

约束条件定义

  • 列值非空(not null)
  • 列值唯一(unique)
  • 列值上是否符合表达式(check)
# 主要说明check定义
create table tab(
	xxx,
	xxx,
	xxx,
	sex char(2) check(sex in ('男', '女')),			# 定死性别只能取男或者女
	xxx
)
# check也可以在元组上定义完整性约束
create table tab(
	xxx,
	xxx,
	xxx,
	check (sex = '女' or name not like 'Ms.%')		# 定义name与sex两个属性之间的约束条件
)
  • 如果约束条件不被满足,DBMS直接拒绝执行

完整性约束命名字句

# constaint语句
constraint <完整性约束条件名称>
[primary key 短语
|foreign key 短语
|check 短语]

# e.g.
create table tab(
	sno numeric(6)
	constraint c1 check (sno between 90000 and 99999),
	sname char(20),
	constraint c2 not null,
	sage numeric(3),
	constraint c3 check(sage < 30),
	xx,
	constraint studentkey primary key (sno)
)

alter table tab
add constraint c1 check xxxx
alter table tab
drop constraint c1
  • constraint可以定义任何一种完整性约束,而且为其表面名称,好处是名称自定义,可以进行删除约束条件。
  • 如果像上面直接给出not null,unique等条件,SqlServer会自动为其添加名称,一般名称都有规律。像主键约束一般叫pk_xxxx。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值