SQL SERVER数据完整性及约束
SQL Server数据库应用开发技术 第六章

6.2 使用约束
6.2.1 空约束(NULL)、非空约束(NOT NULL)
1. 用SQL Server Management Studio实现 【例6.1】设置学生表中字段学号、姓名、性别、入学 时间不允许为空。 1)打开SQL Server Management Studio,在对象资源管理 器中展开教务管理系统,展开“表”结点。 2)选择“学生表”,单击右键,选择“修改”进入表设计 器进行表结构设计,如图6.1所示,分别将学号、姓名 、性别、入学时间字段后的允许空复选框去掉对勾。 3)修改完毕后单击工具栏上的“保存”图标或选择菜单“ 文件”下的“保存”项,关闭窗口即可。
第6章 数据完整性实施
6.1 数据完整性实施方法 6.2 使用约束
6.3 使用默认
6.4 使用规则
6.5 使用标识列
小结
6.1 数据完整性实施方法
有两种方式可以实现数据完整性,即声明数据完 整性和过程数据完整性。 1.声明数据完整性 使用声明数据完整性就是通过在对象定义中来实 现,即定义数据必须满足的条件作为对象定义的一部 分。它包括使用各种约束、默认和规则。 实现数据完整性的首选方法是使用声明完整性。 2.过程完整性 过程数据完整性是通过在脚本语言中定义来实现 的。当执行这些脚本时,就可以强制完整性的实现。 过程数据完整性的方式包括使用触发器和存储过程。 也可以在客户机或服务器上使用其他的编程语言和工 具实现。
【例6.7】创建学生表,对字段身份证号设置唯一约束。
返回目录
6.2 使用约束
6.2.3 唯一约束(UNIQUE)
由于一个表只能定义一个主键,而实际应用中表中 不止一列希望值是唯一的,例如身份证号一般不会做主 键,但它的值也应确保是唯一的,这时就可使用唯一约 束来确保唯一性了。与主键不同的是一个表可以定义多 个 UNIQUE 约束,且定义 UNIQUE 约束列允许空值。不 过由于唯一性,空值也只能出现一次。
第10章 SQL server 2008 表数据完整性

第10章SQL server 2008 表数据完整性表数据完整性指的是数据库中表数据的准确性和一致性。
数据完整性是衡量数据库中数据质量好坏的一种标志,是确保数据库中数据一致、正确以及符合企业规则的一种思想。
可以使无序的数据条理化,确保正确的数据被存放在正确的位置的一种手段。
10.1 表主键表主键(PRIMARY KEY)通过表数据中的一个列或多个列组合的数据来惟一标识表中的每一行数据。
换句话说,表主键就是用来约束数据表中不能存在相同的两行数据。
而且,位于主键约束下的数据应使用确定的数据,不能输入NULL来代替确定的数值。
在管理数据时,应确保每一个数据表都拥有自己惟一的主键,从而实现数据的实体完整性。
在SQL Server 2008系统中,表的主键约束有以下几个特征和作用:●主键约束通常不允许一个或多个列输入重复的值,来保证一个表中所有行的惟一性,使所有行都是可区分的。
●一个表上只能有一个主键,且组成主键的列的数据都不能为空值。
●当定义主键约束时,SQL Server在主键列上建立惟一索引,这个索引在主键被查询时可以提高查询的速度。
当主键由多个列组成时,某一列上的数据可以出现重复,但是这几个列的组合值必须是惟一的。
并且IMAGE和TEXT类型的列不能被定义为主键。
在SQL Server 2008系统中,定义表的主键可以在创建表的同时定义主键,也可以给已有的表添加主键。
同时如果表中指定的主键不需要时,也可以通过Transact-SQL语句将其主键删除。
1.在创建表时定义主键在创建表时,定义主键(PRIMARY KEY)约束的语法如下:在上面语法中,各元素的具体意义如下:●constraint_name 主键约束的名称,他也是数据库对象,所以约束的命名也必须遵守数据库对象命名的规则。
●CLUSTERED 表示在该列上建立聚集索引。
●NONCLUSTERED 表示在该列上建立非聚集索引。
例如,在【工资管理系统】数据库中,新建一个【学历表】,定义【学历编号】列为主键约束,具体语句如下所示:2.给已有表添加主键如果某个表已经存在,但没有设置主键(PRIMARY KEY)约束,那么就可以使用下列语句向表中添加PRIMARY KEY约束。
第5章sql数据库完整性约束

5.2.4 默认值(DEFAULT)约束
默认约束是指在用户未提供某些列的数据时,数据库 系统为用户提供的默认值。从而简化应用程序代码和提高 系统性能。 表的每一列都可包含一个DEFAULT定义。可以修改或 删除现有的DEFAULT定义,但必须首先删除已有的 DEFAULT定义,然后通过新定义重新创建。 1.利用Management Studio定义(删除)default约束 步骤1:右键要建立default约束的表选择“修改”。 步骤2:在弹出的窗口中对应字段的“默认值或绑定”处 输入默认值。 步骤3:点击保存即可。
PRIMARY KEY约束在表中定义一个主键,唯一的标 识表中的行。一个表只能有一个PRIMARY KEY约束。
当向表中的现有列添加PRIMARY KEY约束时,SQL Server将检查列中现有的数据以确保现有数据遵从主键的 规则,即无空值、无重复值。 每个表都应有一个主键。主键可以是一列或列组合。
CREATE TABLE kc_new (5-4)
(课程号 CHAR(4) NOT NULL CONSTRAINT pk_kch1 PRIMARY KEY, 课程名 CHAR(16) NOT NULL CONSTRAINT ix_kcm1 UNIQUE,
学分 SMALLINT,
数据库管理与开发项目教程(SQL Server 2019)第3版 项目八 实现数据完整性

/*定义列名、数据类型、
是否空值
[[CONSTRAINT check_name] CHECK (logical_expression)][,…n]) /*定义
CHECK约束
【例8-1】 在xs数据库中创建XSXX表,并定义CHECK约束。
10
项目8 实现数据完整性 ->任务1 实现域完整性
任务1-2 CHECK约束
项目8 实现数据完整性 ->任务1 实现域完整性
任务1-2 CHECK约束
CHECK约束实际上是字段输入内容的验证规则,表示一个字段的输入内容
必须满足CHECK约束的条件,如果不满足,数据就无法正常输入。
CHECK约束可以作为表定义的一部分在创建表时创建,也可以添加到现有表中。
表和列可以包含多个CHECK约束。允许修改或删除现有的CHECK约束。
【项目描述】
为xs数据库创建CHECK约束、规则、DEFAULT约束、默认值对象、索引、PRIMARY KEY约束、 UNIQUE约束、FOREIGN KEY约束实现数据完整性保护。
项目8 实现数据完整性
【项目分析】 项目4在数据库xs中建立了数据表,在向表中输入数据时,由于种种原因,有
时会输入无效或错误的信息。比如,对不同的学生输入了相同的学号,“性别” 字段的值输入了非法数据,相同的数据行被多次输入,学生成绩表中出现了学生 档案表中不存在的学号等。之所以会出现这些错误信息,是因为没有实现数据完 整性。为避免此类情况发生,本项目主要介绍如何通过实施数据完整性来解决上 述问题,以此保证数据输入的正确性、一致性和可靠性。
《SQL SERVER2019项目开发教程 》
项目8 实现数据完整性
项目8 实现数据完整性
实验三、四创建表及输入数据及完整性约束

实验三、四 创建表及输入数据及完整性约束本实验需要4学时。
一、实验目的要求学生熟练掌握和使用Transact-SQL、SQL Server企业管理器创建表、索引和修改表结构,并学会使用SQL Server 查询分析器接收Transact-SQL语句和进行结果分析。
学生熟练掌握使用 SQL、Transact-SQL和SQL Server企业管理器向数据库输入数据、修改数据和删除数据的操作。
二、实验内容1 创建表、确定表的主码和约束条件。
为主码建索引。
2 查看和修改表结构。
3 输入数据、修改数据和删除数据三、实验步骤(1)通过企业管理器,在建好的图书借阅数据库中建立图书、读者和借阅3个表,其结构为;图书(书号,类别,出版社,作者,书名,定价,作者).读者(编号,姓名,单位,性别,电话).借阅(书号,读者编号,借阅日期)要求为属性选择合适的数据类型,定义每个表的主码.是否允许空值和默认值等列级数据约束。
(2)在企业管理器中建立图书、读者和借阅3个表的表级约束.每个表的主码约束.借阅表与图书表间、借阅表与读者表之间的外码约束,要求按语义先确定外码约束表达式.再通过操作予以实现.实现借阅表的书号和读者编号的惟一性约束:实现读者性别只能是“男”或“女”的Check(检查)约束。
(3)通过企业管理器,在图书借阅数据库的图书、读者和借阅3个表中各输入10条记录。
要求记录不仅满足数据约束要求.还要有表间关联的记录。
(4)通过企业管理器实现对图书借阅数据库的图书、读者和借阅3个表中数据的插入。
删除和修改操作。
(5)通过企业管理器实现对学生选课库的数据增加、数据删除和数据修改操作、要求学生、课程和选课表中各有10条以上的记录。
四、实验方法1 新建表在 SQL Serve 2000的数据库中,文件夹是按数据库对象的类型建立的.文件夹名是该数据库对象名。
当在企业管理器中选择服务器和数据库文件夹,并打开已定义好的图书.读者数据库后,会发现它自动设置了关系图、表、视图、存储过程、用户、角色、规则、默认等文件夹。
SQL Server数据库中数据完整性的实现

表 2 s eu  ̄ i o( u i ¥课表 )
U dt cus e wl u p a o r st in m= ( l to n f m S CUw ee tcu e e l s e u t()r | O hr s o e cc o U u
该触发器 的作 用是当对 s cu 学生 选课表) t o( n 中的记录进行插 入或 删除或修改操作 时 , 该触发 器被触发 , 来完 成 cus ( or 课程表) 有课 e 中所 程的报名人数 的统计修改工作 。 3 用户 自定义完整性的实现 、
Cr aeti g r r s uc e t r e t ou g t
_
On su o tc u
F ri s r , e ee, d t o e t d lt up a e n
As
! !兰一 ! ! I!! I! 墨 兰 lu 竺 三 ! ! 竺 竺 l : 兰 :! 竺
表 1sue t学 生 表 ) t n( d
例如在 cus( or 课程表 ) , i u 报 名人数 ) e 中 wl m( l n 列需要实 时记录各 门课程 当前 的报名人数 ,也 就是当学生选课 表中的记 录发生 变化时 , cu e 课程表 ) or ( s 中对应课程 的 wl u ( in m 报名人数 ) l 列的值需要立即进行 更新 。现在的数据完整性 的实现就可 以通过触发器来完成。
基于SQL Server数据库完整性约束的几点探讨

保证一个表 中的每一行必须是唯一 的 ( 元组的唯一性) 为 。 保 证实体完整性 , 需指 定一个表 中的一列或一组列作为它的主 键 (r m r e ) 一个表中每行的主键 必须确实含有 一个值。 P i ay k y 。
一
立即约 束和推迟 ( e t 约束 、 到 o) 状态约束和状态演变约 束。但 在实际 的系统中, 一般将数据完整性约束分为标准的数据完整
个表只 能含有一个主键 , 如需要从其它列中除去重复的值 ,
办 公 自动化杂 志 ・2 ・ 5
维普资讯
20年 1月 06 1 总第 9 3期
可 以将一个或 一组非主键列指定为一个候 选键 或唯 值 键 。 () 3 引用完整性 (e e e c n er t ) R fr n e it g i y
Wa g n Ho g in n xa g
( ct nl ehC l g i nn n ier g& T cn lg iesy F xn 0 0、 Vo a o a T c ol e La igE g ei i e o n n eh oo yUnv rt u i 13 0 i 2
Ab ta t h tgi srit f aa a ei ted sg O ec ne t f tI d ent nya e th blyo ted tb s , u loa e t sr c T ei e ryr t n d tb s e inC T o tn i.t o s ’o l f c ea it fh aa a e b t s f cs n t e a o sh o t i a
关键词 SL S r e 数据库 完 整性 约束 O e vr
S v r l s u so so h n e rt sr i tBa e e e a c s i n n t e I t g i Re t a n s d Di y
SQL Server约束完整性研究

( 新余高等专科学校 , 江西 新余 3 8 3 ) 3 0 1
【 摘 要 】 约束是S L e e提供的自 保持数据库完 Q r r Sv 动 整性的 一种方法, 约束完 是指数据的正 整性 确性和完 备性。 主 本文
要 阐述 了 S ev r QLS re 约束 完整 性 的分 类 和 S ev r QLS re 约束 完整 性 的 实现 方 法 。
的 I E TT D N I Y属性来实施实体完整性 。
23 域 完 整 性 .
域完整性 即为某列有效值的集合 , 用来约束指定列的取值 范围, 确定哪些 数据是数 据库 可以接受 的 , 哪些数据是非法数 据 。它要求表 中指定列 的数据具有 正确 的数据类型、 格式和有 效 的数据范围。 强制域有效性的方法有 : 限制类 型( 通过数据类 型)格式( 、 通过 C E K约束和规则 ) H C 或可能值 的范围。 域完整 性通 过 F R I NK Y约 束、 H K约束、 E AU T定义 、 O E G E C EC D F L
一
类型完整性约束是用来 判断用户输入 的数据是否满 足数
据库对该数据 的类型要求。 尽管类型完整性与域完整性是两种
独立 的概念 , 但是 , 应用类型完整性一般会涉及到域 。
25 转 换 完 整性 .
致, 如为某产品增加 了一份定单 , 但却没有调整产品的库存
信息 ; 3) ( 将存在 的数据修改为无效 的数据 , 如将某学生 的班
( E A T C N T AI T ) 检 查 约 束 D F UL O S R N S、 (H C O 一 C E K C N
NO U L定 义和 规 则来 实 现 。 TN L
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
SQL SERVER数据完整性及约束
作者:李浩周媛媛
来源:《科技与企业》2013年第15期
【摘要】所谓数据完整性,实际上是衡量数据库中数据质量好坏的一种标志,是确保数据库中数据一致,正确以及符合企业规则的一种思想,本文以详细的文字来介绍了什么是数据完整性及约束,以及如何在数据库建设中应用和使用这些约束。
【关键词】SQL Server;约束;数据完整性;一致性
在数据库管理系统中,保证数据库中的数据完整性是非常重要的。
所谓数据完整性,就是指存储在数据库的表中数据的一致性和正确性。
约束定义关于列中允许值的规则,是强制完整性的标准机制,对输入数据的取值范围和格式的限制称为约束。
约束是用来保证数据完整性的。
在SQL Server中有6种常设约束:空置约束(NULL)、唯一性约束(unique constraint)、主键约束(primary key constraint)、外键约束(foreign key constraint)、检查约束(check constraint)、缺省约束(default constraint)。
一、SQL Server的数据完整性
存储在数据库中的所有数据值均属正确的状态。
如果数据库中存储有不正确的数据值,则该数据库称为已丧失数据完整性。
强制数据完整性可确保数据库中的数据质量。
例如,如果有一“教学管理数据库”,学生表中学号一项输入了值为20110101的学生,那么该数据库不应允许其他学生使用同一学号值。
如果计划将选修表中成绩的值范围设定为0到100,则数据库不应接受121。
如果学生表有一列为班级编码,该列存储的班级编码为数据库中允许的有效班级编码。
二、数据完整性分类
在SQL Server中,根据数据完整性所作用的数据库对象和范围不同,可以将数据完整性分为实体完整性、域完整性、引用完整性、用户定义完整性四种。
1、实体完整性
实体完整性,简单来说,就是将表中的每一行看作一个实体。
实体完整性要求表的标示符列或主键的完整性(主键不能为空)。
可以通过建立唯一索引、PRIMARY KEY约束、UNIQUE约束来实施实体完整性。
2、域完整性
域完整性是指给定列的输入有效性。
要求表中指定列的数据具有正确的数据类型、格式和有效的数据范围。
强制域有效性的方法有:限制类型(通过数据类型)、格式(通过CHECK 约束和规则)或可能值的范围。
域完整性通过FOREIGN KEY约束、CHECK约束、DEFAULT定义、NOT NULL定义和规则来实现。
3、引用完整性
引用完整性又称参照完整性。
引用完整性维持被参照表和参照表之间的数据一致性,主要通过主键(PRIMARY KEY)约束和外键(FOREIGN KEY)约束来实现。
引用完整性确保数据在所有表中一致。
这样的一致性要求不能引用不存在的值,如果键值更改了,那么在整个数据库中,对该键值的所有引用要进行一致的修改。
在被参照表中,当其主键值被其他表所参照时,该行不能被删除也不允许改变。
在参照表中,不允许参照不存在的主键值。
4、用户定义完整性
用户定义完整性使用户能定义不属于其它任何完整性分类的特定设置。
所有的完整性类型都支持用户定义完整性。
三、SQL Server的约束
约束作为数据库定义的一部分在CREATE TABLE语句中声明,所以又称做声明完整性约束。
也可以在可视化操作界面,如sqlserver2005的ssms中操作设置。
约束独立于表结构,可以在不改变表结构情况下,通过ALTER TABLE语句来添加或者删除。
在删除一个表时,该表所带的所有约束定义也被随之删除。
1、空置约束
格式:null/not null。
空置约束,是否允许该字段的值为NULL。
当某一字段的值一定要输入才有意义的时候,则可以设置为NOT NULL。
例如主键列就不允许出现空值,否则就失去了唯一标识一条记录的作用。
2、唯一约束(UNIQUE约束)
格式:[CONSTRAINT ] UNIQUE。
UNIQUE约束用于指明基本表在某一列或多个列的组合上的取值必须唯一。
定义了UNIQUE约束的那些列称为唯一键,系统自动为唯一键建立唯一索引。
从而保证了唯一键的唯一性。
唯一键允许为空,但系统为保证其唯一性,最多只可以出现一个NULL值。
3、主键约束(PRIMARY KEY约束)
格式:[CONSTRAINT ] PRIMARY KEY。
PRIMARY KEY约束,PRIMARY KEY约束用于定义基本表的主键,起唯一标识作用,其值不能为NULL,也不能重复,以此来保证实体的完整性。
PRIMARY KEY与UNIQUE约束类似,通过建立唯一索引来保证基本表在主键列取值的唯一性,但它们之间存在着很大的区别:
①在一个基本表中只能定义一个PRIMARY KEY约束,但可定义多个UNIQUE约束;
②对于指定为PRIMARY KEY的一个列或多个列的组合,其中任何一个列都不能出现空值,而对于UNIQUE所约束的唯一键,则允许为空。
4、外键约束(FOREIGN KEY约束)
格式:REFERENCES 主表名(主键名)。
FOREIGN KEY约束要用到两个表一个从表,一个主表,包含外部键的表称为从表,包含外部键所引用的主键或唯一键的表称主表。
系统保证从表在外部键上的取值要么是主表中某一个主键值或唯一键值,要么取空值。
以此保证两个表之间的连接,确保了实体的参照完整性。
5、检查约束(CHECK约束)
格式:CHECK (条件表达式)。
CHECK约束用来检查字段值所允许的范围,如一个字段只能输入整数,而且限定在0-100的整数,以此来保证域的完整性。
6、默认值约束
格式:DEFAULT 默认值。
当为一列的约束设的是默认值约束。
那么当用户在插入记录是没有明确地提供值时,系统便自动将默认值赋予给该列。
例:建立一个学生表,对性别字段进行默认约束。
CREATE TABLE 学生表
(学号 CHAR(7),
性别 CHAR(2)DEFAULT …男‟,
……)
建立和使用约束的目的是保证数据的完整性,约束是SQL Server强制实行的应用规则,使用规则能够限制用户存放到表中数据的格式和值的范围,可确保数据库中的数据质量。