1、单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,第9章 数据完整性ppt课件(全),*,第,9,章数据,完整性,第9章 数据完整性ppt课件(全),本章的学习目标:,操纵数据时的问题和解决机制,约束的基本概念和类型,管理DEFAULT约束,管理CHECK约束,管理主键约束,管理UNIQUE约束,管理外键约束,禁止约束的场景,第9章 数据完整性ppt课件(全),9.1 数据完整性概述,数据完整性的含义包括以下内容:,(1)数值的完整性,指数据类型与取值的正确性。,(2)表内数据不相互矛盾。,(3)表间数据不相互矛盾,指数据的关联性不被破坏。,第9章 数据完整性
2、ppt课件(全),实体完整性,要求表中每一条记录(每一行数据)是惟一的,即它必须至少拥有一个惟一标识以区分不同的数据行。实现方法有:主键约束PRIMARY KEY、惟一性约束UNIQUE、惟一索引UNIQUE INDEX、标识IDENTITY等。,第9章 数据完整性ppt课件(全),值域完整性,限定表中输入数据的数据类型与取值范围。实现方法:默认值约束DEFAULT或默认对象、核查约束CHECK、外键约束FOREIGN KEY、规则RULE、数据类型、非空性约束NOT NULL等。,第9章 数据完整性ppt课件(全),引用完整性,指对数据库进行添加、删除、修改数据时,要维护表间数据的一致性。实
3、现方法:外键约束FOREIGN KEY、核查约束CHECK、触发器TRIGGER、存储过程PROCEDURE。,第9章 数据完整性ppt课件(全),用户定义的完整性,用于实现用户特殊要求的数据规则或格式。实现方法:默认值DEFAULT、核查约束CHECK、规则RULE 等。,第9章 数据完整性ppt课件(全),9.2 使用约束实施数据的完整性,约束用于实现表内数据的完整性,属于对象级。SQL Server 支持的约束有如下几种:非空约束NOT NULL,主键约束PRIMARY KEY、惟一约束UNIQUE、核查约束CHECK、外键约束 FOREIGN KEY、默认值约束DEFAULT。,第9章
4、 数据完整性ppt课件(全),9.3 约束的概念和类型,在SQL Server中,对于基本表的约束分为列约束和表约束。列约束是对某一个特定列的约束,包含在列定义中,直接跟在该列的其他定义之后,用空格分隔,不必指定列名;表约束与列定义相互独立,不包括在列定义中,通常用于对多个列一起进行约束,与列定义用“,”分隔,定义表约束时必须指出要约束的列的名称。,完整性约束的基本语法格式如下:,CONSTRAINT constraint_name(约束名),第9章 数据完整性ppt课件(全),9.4 管理约束,9.4 管理约束,本节详细研究各种DEFAULE、CHECK、主键、UNIQUE、外键等约束的特点
5、创建方式、修改等内容。,第9章 数据完整性ppt课件(全),约束:,完整性类型,约束类型,描述,域,DEFAULT,指定列的默认值,CHECK,指定列的允许值,FOREIGN KEY,指定必须存在值的列,NULL,指定是否允许为,NULL,实体,PRIMARY KEY,唯一标识每一行,UNIQUE,防止非主键重复,引用,FOREIGN KEY,定义值与同一个表或另一个表的主键值匹配的一列或多列组合,CHECK,指定根据同一个表中其他列的值可在列中接受的数据值,第9章 数据完整性ppt课件(全),PRIMARY KEY,约束:,一个表通常可以通过一个列或多个列组合的数据来唯一标识表中的每一行,
6、这个列或列的组合就被称为表上的主键。创建表中的主键是为了保证数据的实体完整性。,PRIMARY KEY,(主键)约束用于定义基本表的主键,它是惟一确定表中每一条记录的标识符,其值不能为,NULL,,也不能重复,以此来保证实体的完整性。,第9章 数据完整性ppt课件(全),使用,Transact-SQL,语句操作法设置主键约束,其语法形式如下:,CONSTRAINT constraint_name PRIMARY KEY,(,column_name,),第9章 数据完整性ppt课件(全),UNIQUE,约束,通过,SSMS,可以完成创建和修改唯一性约束的操作,使用,Transact-SQL,语句
7、完成惟一性约束的操作,其语法形式如下:,CONSTRAINT constraint_name UNIQUE,(,column_name,),第9章 数据完整性ppt课件(全),CHECK,约束,使用,SSMS,图形化界面创建检查约束,用,Transact-SQL,语句创建检查约束。其语法形式如下:,CONSTRAINT constraint_name CHECK,(,logical_expression,),第9章 数据完整性ppt课件(全),DEFAULT,约束,使用,SSMS,图形化界面创建默认约束,用,Transact-SQL,语句创建默认约束。其语法形式如下:,CONSTRAINT c
8、onstraint_name DEFAULT constraint_expression FOR column_name,第9章 数据完整性ppt课件(全),NULL,约束,使用,SSMS,图形化界面设置空值约束。,用,Transact-SQL,语句创建空值约束。其语法形式如下:,直接在相应的语句后书写,NULL|NOT NULL,第9章 数据完整性ppt课件(全),FOREIGN KEY,约束,在,SSMS,图形化平台上添加外键约束。,第9章 数据完整性ppt课件(全),使用,Transact-SQL,语句设置外部键约束,其语法形式如下:,CONSTRAINT constraint_name
9、 FOREIGN KEY,(,column_name,n,),REFERENCES ref_table ,(,ref_column,n,),第9章 数据完整性ppt课件(全),9.5 禁止约束,约束是作用于表的数据库对象,离开了表,约束将不再存在。除了约束外,SQL Server还提供了两个独立于表的数据库对象用以维护数据库的完整性,即默认和规则。规则的作用类似于核查约束,若将一个规则绑定到指定列上,则可以检查该列的数据是否符合规则的要求。,第9章 数据完整性ppt课件(全),9.5.1 创建规则,创建规则的语法如下。,命令格式:,CREATE RULE rule_name AS rule_e
10、xpression,命令说明:,(1)rule_name为要建立的规则的名称。,(2)rule_expression为规则表达式,它与WHERE子句中的条件表达式类似,可以使用比较表达式、逻辑表达式、LIKE子句等,所不同的是需要将WHERE子句中的列名改为一个以开头并符合SQL Server命名规则的参数。,第9章 数据完整性ppt课件(全),9.5.2 绑定规则,规则创建后,它仅仅是一个数据库对象,与其他数据库对象并没有联系。要将规则应用于一个表(或用户定义的数据类型)中,必须将其与表中的指定列(或用户定义的数据类型)相结合,称之为将规则绑定(bind)到列(或用户定义的数据类型),或称绑
11、定规则。绑定规则需要使用系统存储过程sp_bindrule,语法如下。,命令格式:,sp_bindrule rule_name,table_name.column_name,或,sp_bindrule rule_name,user_defined_datatype,futureonly_ flag,命令说明:,第9章 数据完整性ppt课件(全),9.5.3 解除绑定,当表中不再需要规则时,可以将规则与列分离,称为解除绑定。解除绑定需要使用系统存储过程sp_unbindrule,语法如下。,命令格式:,sp_unbindrule table_name.column_name,或,sp_unbin
12、drule user_defined_datatype ,futureonly_ flag,第9章 数据完整性ppt课件(全),9.5.4 删除规则,删除规则的前提是解除数据库中所有表的绑定。删除规则语法如下。,命令格式:,DROP RULE rule_name,第9章 数据完整性ppt课件(全),9.6 默 认,9.6.1 创建默认,创建默认的语法如下。,命令格式:,CREATE DEFAULT default_name AS default_expression,命令说明:,(1)default_name是符合SQL Server标识符规则的默认值名称。,(2)default_expres
13、sion是常量,用以指出默认值的具体数值或字符串。,第9章 数据完整性ppt课件(全),9.6.2 绑定默认,绑定默认的语法如下。,命令格式:,sp_bindefault default_name,table_name.column_name,或,sp_bindefault default_name,user_defined_datatype ,futureonly_ flag,命令说明:,(1)default_name 为默认值数据库对象的名称。,(2)其他语法项目的用法与规则类似。,第9章 数据完整性ppt课件(全),9.6.3 解除绑定,解除默认绑定的语法如下。,命令格式:,sp_unb
14、indefault table_name.column_name,或,sp_unbindefault user_defined_datatype ,futureonly_ flag,第9章 数据完整性ppt课件(全),9.6.4 删除默认,删除默认之前要先解除默认绑定。删除默认的语法如下。,命令格式:,DROP DEFAULT default_name,第9章 数据完整性ppt课件(全),9.6.5 使用SSMS图形化界面管理默认值对象,与管理规则类似,在企业管理器中展开指定数据库节点,单击“默认”,在窗口右边可以看到当前数据库中的所有默认值对象。右击“默认”,选择“新建默认”,在弹出的窗口输
15、入默认名称及其取值。或右击某个现有的默认值对象,选择“属性”,可以查看、修改或绑定该默认值对象。注意在修改之前需要解除绑定。,第9章 数据完整性ppt课件(全),9.7 使用自动编号IDENTITY,SQL Server为自动进行顺序编号而引入了自动编号的IDENTITY属性。当需要对某一列输入的数据进行有规律的顺序编号且保证每个编号惟一时,最好是采用IDENTITY,这样既方便准确,速度又快。具有IDENTITY属性的列称为标识列,其取值称为标识值,,第9章 数据完整性ppt课件(全),设置IDENTITY属性的语法如下。,建立表时定义标识列。,命令格式:,CREATE TABLE table_name,(column_name data_type,IDENTITY (seed,increment)NOT NULL,.n,),第9章 数据完整性ppt课件(全),






