SQLserver 数据完整性

本文深入探讨了数据库完整性,包括实体完整性、域完整性、参照完整性和用户定义完整性。通过实例解析了主键约束、唯一性约束、检查约束、默认值约束、外键约束和非空约束的作用及实现方式,旨在帮助读者理解并掌握这些约束在确保数据正确性和一致性中的关键作用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


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

数据完整性分类

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

实体完整性

  • 含义:表的关键字不能为空,且取值唯一
  • 举例:在学生表中,学号能唯一确定以为学生
  • 手段:索引、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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值