SQLserver 数据完整性


说实话,我也不甚理解这些概念,只能说先记下,待未来的某一天,能够恍然大悟

数据完整性分类

数据完整性是要求数据库中数据有正确性和一致性

实体完整性

  • 含义:表的关键字不能为空,且取值唯一
  • 举例:在学生表中,学号能唯一确定以为学生
  • 手段:索引、UNIQUE约束、PRIMARY KEY约束 或 IDENTITY属性

域完整性

  • 含义:表中的列必须满足某种特定数据类型或约束
  • 举例:在学生表中,性别只能是男/女
  • 手段:限制数据类型、FOREIGN KEY约束、CHECK约束、DEFAULT定义、NOTNULL定义

参照完整性

  • 含义:有关联的两个表主键和外键值对应
  • 举例:在学生表中,学生表与成绩表中的“学号”应当对应
  • 手段:FOREIGN KEY约束、CHECK约束

用户定义完整性

  • 含义:用户自定义的规则
  • 举例:在学生表中,用户定义学生年龄小于30岁
  • 手段:用户自己执行

约束机制

约束是一种强制数据完整性的标准机制,确保在字段输入有效数据,维护各表之间的关系
作用在被约束的列上
语法

create table 表名
(
	列名 列属性 constraint 表名_pk primary key,
	列名 列属性 constraint 列名_uk unique,
	列名 列属性 constraint 列名_ck check (条件表达式),
	列名 列属性 default '默认值',
	列名 列属性 constraint 列名_fk foreign key(列名) reference 被参照表(被参照列),
	列名 列属性 not null,
)go

SQL server支持以下6种约束,语法为添加约束(上面的是创建表时设置约束)

主键约束 PRIMARY KEY

确保该列非空不重复
可以强制实现 实体完整性

alter table 表名
	add constraint 表名_pk
		primary key nonclustered (列名)
go

唯一性约束 UNIQUE

确保该列不重复

alter table 表名
	add constraint 列名_uk
	unique nonclustered (列名)

检查约束 CHECK

用条件表达式判断输入值
可以强制实现 域完整性

alter table 表名
	add constraint 列名_ck
	check (条件表达式)

默认值约束 DEFAULT

如果该列无输入值,则会自动填充默认值

alter table 表名
	add constraint 列名_df
	default 默认值 for 列名

外键约束 FOREIGN KEY

该列添加新值时,确保被参照的列已存在该值
可以强制实现 参照完整性

alter table 表名
	add constraint 列名_fk
	foreign key (列名) references 被参照表(被参照列)

非空约束 NOT NULL

该列不接受空值
可强制实现域完整性

alter table 表名
	alter column 列名 列属性 not null
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值