数据库技术与应用第10章数据完整性.ppt
《数据库技术与应用第10章数据完整性.ppt》由会员分享,可在线阅读,更多相关《数据库技术与应用第10章数据完整性.ppt(104页珍藏版)》请在三一办公上搜索。
1、第10章 数据完整性,10.1 数据完整性概述10.2 使用约束实施数据的完整性10.3 规 则10.4 默 认10.5 使用自动编号IDENTITY,数据的完整性指数据库中数据的一致性与正确性。在SQL Server 2000中,可以通过约束、默认、规则、触发器等来达到保证数据完整性的目的。本章介绍如何通过约束、默认与规则实现数据的完整性。,10.1 数据完整性概述,数据完整性的含义包括以下内容:(1)数值的完整性,指数据类型与取值的正确性。(2)表内数据不相互矛盾。(3)表间数据不相互矛盾,指数据的关联性不被破坏。,数据完整性有不同的分类方法。(1)按照数据完整性的功能可以将其分为四类:实
2、体完整性,要求表中每一条记录(每一行数据)是惟一的,即它必须至少拥有一个惟一标识以区分不同的数据行。实现方法有:主键约束PRIMARY KEY、惟一性约束UNIQUE、惟一索引UNIQUE INDEX、标识IDENTITY等。,值域完整性,限定表中输入数据的数据类型与取值范围。实现方法:默认值约束DEFAULT或默认对象、核查约束CHECK、外键约束FOREIGN KEY、规则RULE、数据类型、非空性约束NOT NULL等。,引用完整性,指对数据库进行添加、删除、修改数据时,要维护表间数据的一致性。实现方法:外键约束FOREIGN KEY、核查约束CHECK、触发器TRIGGER、存储过程P
3、ROCEDURE。用户定义的完整性,用于实现用户特殊要求的数据规则或格式。实现方法:默认值DEFAULT、核查约束CHECK、规则RULE 等。,(2)按照在数据库中实现数据完整性的作用级别,可以将其分为对象级与总体级。对象级:作用范围是数据库的某个表对象,是在定义表的同时定义的,删除表则失去作用,如约束。,总体级:是作为数据库的对象单独定义的,因此单独存在于数据库中,需要时可以绑定到数据库的表或用户定义的数据类型中,如默认对象、规则。(3)按照数据完整性的实施方法包括:约束、默认、规则、触发器、存储过程等。,10.2 使用约束实施数据的完整性,约束用于实现表内数据的完整性,属于对象级。SQL
4、 Server 支持的约束有如下几种:非空约束NOT NULL,主键约束PRIMARY KEY、惟一约束UNIQUE、核查约束CHECK、外键约束 FOREIGN KEY、默认值约束DEFAULT。,约束可以在创建表时定义,也可以在修改表时定义(即向已有的表中添加约束),但同一个数据库中不同约束的名称不能相同。按约束的作用范围可以分为两类,在定义列时定义的约束,仅作用于本列,称之为列级约束;表中单独定义的约束,称之为表级约束。表级约束的声明与列的定义无关,当一个约束作用于一个以上的列时,必须使用表级约束。,10.2.1 主键约束PRIMARY KEY通常在表中将一个列或列组合的数据设置成具有各
5、不相同的值,以便能惟一地标识表中的每一行。这样的一列或多列称为表的主键,通过它可强制实现表的实体完整性,消除表的冗余数据,主键具有如下特性:(1)不重复性。(2)非空性。(3)惟一性。,1创建表时定义主键约束创建或更改表时可通过定义 PRIMARY KEY 约束来创建主键。(1)定义列级主键的语法命令格式:,CREATE TABLE table_name(column_name data_type DEFAULT default_expression|IDENTITY(seed,increment)CONSTRAINT constraint_name PRIMARY KEY CLUSTERED
6、|NONCLUSTERED,.n),命令说明:DEFAULT为默认值约束的关键字,用于指定其后的default_expression为默认值表达式。(默认值约束见本章第10.2.5节)IDENTITY(seed,increment)表示该列为标识列或称自动编号列(见本章10.5节)。,CONSTRAINT constraint_name 为可选项,关键字CONSTRAINT用于指定其后面的约束名称constraint_name。如省略本选项,则系统自动给出一个约束名。建议选择约束名以便于识别。PRIMARY KEY表示该列具有主键约束。,CLUSTERED|NONCLUSTERED表示建立聚簇
7、索引或非聚簇索引,省略此项则系统默认为聚簇索引。如果没有特别指定本选项,且没有为其他 UNIQUE 惟一约束指定聚簇索引,则默认对该 PRIMARY KEY 约束使用 CLUSTERED。,(2)定义表级主键。表级主键一般位于表定义中所有列定义之后,与列定义可以用逗号相隔,语法如下。,命令格式:CREATE TABLE table_name(column_name data_type,.n CONSTRAINT constraint_name PRIMARY KEY CLUSTERED|NONCLUSTERED(column_name,.n),命令说明:(column_name,.n)表示该表
8、级主键可以作用于组合在一起的多列所构成的列组合。,2更改表的主键约束(1)在现有表中添加一列,同时将其设置为主键,要求表中原先没有主键,语法如下。,命令格式:ALTER TABLE table_nameADD column_name data_type DEFAULT default_expression|IDENTITY(seed,increment)CONSTRAINT constraint_name PRIMARY KEY CLUSTERED|NONCLUSTERED,命令说明:ALTER TABLE 只允许添加可包含空值或指定了 DEFAULT 定义的列。因为主键不能包含空值,所以需要
9、指定 DEFAULT 定义,或指定IDENTITY。其他说明与创建主键约束类同。,(2)使表中现有的一列(或列组合)成为主键,要求表中原先没有主键。且备选主键列中的已有数据不得重复或为空,语法如下。,命令格式:ALTER TABLE table_name WITH CHECK|WITH NONCHECK ADD CONSTRAINT constraint_name PRIMARY KEY CLUSTERED|NONCLUSTERED(column_name,.n),命令说明:(1)WITH CHECK为默认选项,该选项表示将使用新的主键约束来检查表中已有数据是否符合主键条件;如果使用了WITH
10、 NOCHECK选项,则不进行检查。(2)ADD指定要添加的约束。,(3)将表的主键由当前列换到另一列。一般先删除主键,然后在另一列上添加主键。(4)删除主键约束语法,命令格式:ALTER TABLE table_nameDROP CONSTRAINT primarykey_name,命令说明:primarykey_name表示要删除的主键名称,该名称是建立主键时定义的。如果建立主键时没有定义名称,则这里必须输入建立主键时系统自动给出的随机名称。3使用企业管理器管理主键,10.2.2 惟一约束UNIQUE一个表只能有一个主键,若有多列或多个列组合需要实施数据惟一性,则可采用惟一约束。惟一约束与
11、主键约束的主要区别在于:惟一约束用于非主键列,使之满足数据惟一性要求;惟一约束允许NULL值,而主键不允许;惟一约束可以在多列或多个列组合上分别设置,而主键只能在一列或一个列组合上设置。,1创建表时定义惟一约束(1)定义列级惟一约束的语法命令格式:CREATE TABLE table_name(column_name data_type DEFAULT default_expression|IDENTITY(seed,increment)CONSTRAINT constraint_name UNIQUE CLUSTERED|NONCLUSTERED,.n),显然,惟一约束与主键约束的定义十分相
12、似,区别仅在于惟一约束采用关键字UNIQUE,而主键约束采用关键字PRIMARY KEY。(2)定义表级惟一约束。,2更改现有表的惟一约束 3使用企业管理器管理惟一约束,10.2.3 核查约束CHECK核查约束用于检查输入数据的取值是否正确,只有符合核查约束条件的数据才能输入。在一个表中可以建立多个核查约束,在一列上也可以建立多个核查约束,只要它们不相互矛盾。,1创建表时定义核查约束创建表时定义核查约束语法如下。命令格式:CREATE TABLE table_name(column_name data_type CONSTRAINT constraint_name CHECK NOT FOR
13、REPLICATION(check_criterial),.n,.n),命令说明:(1)NOT FOR REPLICATION:该选项表示在复制表时禁用核查约束。(2)CHECK:该关键字表示定义的约束为核查约束。(3)check_criterial为核查准则,一般是条件表达式,与WHERE子句中的查询条件表达式类似。,(4)(check_criterial),.n:表示在一列上可以设置多个核查约束,只要它们不相互矛盾。(5)NOT FOR REPLICATION:用于在复制与分发过程中使核查约束暂时失效,而仅对用户的修改(而不是对复制进程)强加约束。,2更改表的核查约束(1)在现有表中添加新
14、的一列,该列具有核查约束。命令格式:ALTER TABLE table_nameADD column_name data_type CONSTRAINT constraint_name CHECK NOT FOR REPLICATION(check_criterial),.n,(2)为表中现有的一列或几列添加核查约束。命令格式:ALTER TABLE table_name WITH CHECK|WITH NOCHECK ADD CONSTRAINT constraint_name CHECK NOT FOR REPLICATION(check_criterial),.n,命令说明:WITH C
15、HECK|WITH NOCHECK:WITH CHECK为默认选项,表示将使用新的核查约束检查表中已有数据是否符合核查条件;若使用WITH NOCHECK,则不进行核查。,10.2.4 外键约束FOREIGN KEY外键是最能体现关系型数据库引用完整性特点的约束。将一个表的一列(或列组合)定义为引用其他表的主键或惟一约束列,则引用表中的这个列(或列组合)就称为外键。被引用的表称为主键约束(或惟一约束)表;引用表称为外键约束表。,1创建表时定义外键约束创建表时定义外键约束的语法如下。命令格式:CREATE TABLE table_name(column_name data_type CONSTR
16、AINT constraint_name FOREIGN KEY REFERENCES ref_table(ref_column),ON DELETE CASCADE|NO ACTION ON UPDATE CASCADE|NO ACTION NOT FOR REPLICATION,.n CONSTRAINT constraint_name,FOREIGN KEY(column_name,.n)REFERENCES ref_table(ref_column,.n)ON DELETE CASCADE|NO ACTION ON UPDATE CASCADE|NO ACTION NOT FOR RE
17、PLICATION,.n),命令说明:(1)第1个外层方括号 表示外键作用于单列(列级约束)时的选项,第2个外层方括号 表示外键作用于列组合时的选项。(2)对于列级外键约束,关键字FOREIGN KEY REFERENCES用以指明其后的ref_table(ref_column)为引用表名称及其列名,该列名所指定的列在引用表中必须为主键或惟一约束列。,(3)对于列组合型外键约束,FOREIGN KEY后面的(column_name,.n)表示本表中的外键列组合,ref_table(ref_column,.n)表示所引用的主键表的表名ref_table及其主键或惟一约束列组合ref_column
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据库技术 应用 10 数据 完整性
链接地址:https://www.31ppt.com/p-6296468.html