打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
SQL Server数据完整性

我们在学习数据库的过程中,经常会听到两个概念:数据冗余和数据完整性。数据冗余是指数据库中存在一些重复的数据,数据完整性是指数据库中的数据能够正确反应实际情况,我们说,为了性能着想,数据库中允许有一些数据冗余,但是要保持数据的完整性。


数据完整性=可靠性+准确性,这里我们要清楚以下几点:


·          数据存放在表中


·          数据完整性的问题大多是由于设计引起的


·          创建表的时候,就应当保证以后数据输入是正确的


       ——错误的数据、不符合要求的数据不允许输入


 


本质而言,保证数据的完整性 = 实施完整性约束


 


完整性包括


1.      实体完整性


a)        数据行不能存在重复


2.      域完整性


a)        实现了对输入到特定列的数值的限制


3.      引用完整性


a)        要求子表中的相关项必须在主表中存在


b)        如果建立了主表和子表的关系,则:


                                       i.              子表中的相关项目的数据,在主表中必须存在;


                                     ii.              主表中相关项的数据更改了,则子表对应的数据项也应当随之


                                    iii.                     更改;


                                   iv.              在删除子表之前,不能够删除主表;


4.      自定义完整性


 


实际上,SQL Server创建表的过程是规定数据列的属性的过程,同时也是实施数据完整性(包括实体完整性、引用完整性和域完整性等)保证的过程。创建表包括选择字段名称、数据类型、定义是否为空、设置默认值、主键和外键关系、检查约束等。表中没有合适的列作为主键,可以创建标识列。


 


SQL Server中存在五种约束:


·          约束的目的:确保表中数据的完整型


·          常用的约束类型:


         主键约束(Primary Key Constraint):要求主键列数据唯一,并且不允许为空


         唯一约束(Unique Constraint):要求该列唯一,允许为空,但只能出现一个空值。


         检查约束(Check Constraint):某列取值范围限制、格式限制等,如有关年龄的约束


         默认约束(Default Constraint):某列的默认值,如我们的男性学员较多,性别默认为


         外键约束(Foreign Key Constraint):用于两表间建立关系,需要指定引用主表的那列


 


添加约束的语法:


ALTER TABLE 表名 ADD CONSTRAINT 约束名  约束类型  具体的约束说明


q       约束名的取名规则推荐采用:约束类型_约束字段


q       主键(Primary Key)约束:如 PK_stuNo


q       唯一(Unique Key)约束:如 UQ_stuID


q       默认(Default Key)约束:如 DF_stuAddress


q       检查(Check Key)约束:如 CK_stuAge


q       外键(Foreign Key)约束:如 FK_stuNo


 


下面我们来给前面建立的学员信息表stuInfo添加约束:


 


/*添加主键约束(stuNo作为主键)*/


ALTER TABLE stuInfo ADD CONSTRAINT PK_stuNo PRIMARY KEY (stuNo)


/*添加唯一约束(因为每人的身份证号全国唯一)*/


ALTER TABLE stuInfo ADD CONSTRAINT UQ_stuID UNIQUE (stuID)


/*添加默认约束(如果地址不填,默认为地址不详*/


ALTER TABLE stuInfo ADD CONSTRAINT DF_stuAddress DEFAULT ('地址不详') FOR stuAddress


/*添加检查check约束,要求年龄只能在1540岁之间*/


ALTER TABLE stuInfo ADD CONSTRAINT CK_stuAge CHECK(stuAge BETWEEN 15 AND 40)


/*添加外键约束(主表stuInfo从表stuMarks建立关系,关联字段为stuNo*/


ALTER TABLE stuMarks ADD CONSTRAINT FK_stuNo  FOREIGN KEY(stuNo) REFERENCES stuInfo(stuNo)


GO


 


如果错误地添加了约束,我们还可以删除约束


删除约束的语法


ALTER TABLE 表名  DROP CONSTRAINT 约束名


例如:删除stuInfo表中地址默认约束


ALTER  TABLE  stuInfo  DROP  CONSTRAINT  DF_stuAddress


 


OK,有了完整性约束,数据完整性就有了保障,数据库中的数据也就能够正确地反应实际情况了。那我们上面又提到了一个主从表的概念,有人可能不太明白,下面文章我们再来介绍一下。

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
MySQL数据库:数据完整性及约束的应用
数据库(一)数据库优点,常用数据库,创建数据库,设计创建数据表,数据类型,数据表操作,完整性约束(非空,主键,唯一,默认,外键)
mysql中常见约束
Sql server 2005学习笔记之约束
oracle学习笔记之约束
Mysql基础02-约束
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服