第8章实现数据的完整性_第1页
第8章实现数据的完整性_第2页
第8章实现数据的完整性_第3页
第8章实现数据的完整性_第4页
第8章实现数据的完整性_第5页
已阅读5页,还剩79页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、学习目标:通过本章,您可以学习以下内容:1 .了解SQLServer数据完整性的概念。2 .使用enterprise manager和SQL语言标识主键约束条件PRIMARYKEY、唯一性约束条件UNIQUE、唯一索引UNIQUEINDEX、IDENTITY等3。使用enterprise manager管理规则。使用T-SQL语言创建、绑定、解除绑定和删除规则4。使用enterprise manager管理默认值,使用T-SQL语言创建、绑定、取消绑定和删除默认值5。使用T-SQL语言生成自动编号IDENTITY,第8章数据完整性,81数据完整性概述数据完整性的含义如下:1.数值的完整性,数据

2、类型和值的准确性。例如,值是整数还是字符,值的范围是否合理,是否允许空值等。表格里的数据互不矛盾。例如,指定表格中的某些资料不重复。3.表之间的数据不相互矛盾,也不破坏数据的关联性。例如,学生库中学生信息的学号必须与学生成绩单上的学号一致。第8章实施数据完整性,811数据完整性的分类数据完整性使用不同的分类方法。(1)根据数据完整性功能,可以分为四类。实体完整性要求表中的每个记录(每个数据行)都是唯一的。也就是说,要区分不同的数据行,必须至少有一个唯一的id。主键约束条件PRIMARYKEY,唯一性约束条件UNIQUE,唯一索引UNIQUEINDEX,标识id等效域完整性,对输入到表中的数据的

3、数据类型和值范围的限制。实施方法:默认值约束条件DEFAULT或主对象、审计约束条件CHECK、外键约束条件FOREIGNKEY、规则RULE、数据类型、NOTNULL等。在数据库中添加、删除或修改数据时,保持表之间数据一致性的引用完整性。实施方法:外键约束条件FOREIGNKEY、审计约束条件CHECK、触发器TRIGGER、存储过程PROCEDURE。第8章数据完整性实现、用户定义的完整性、用于实现用户特殊要求的数据规则或格式(例如,学生库中学生表的出生日期列数据是ddd-dd-dddd格式(d表示09之间的数据)。实施方法:默认值DEFAULT、审计约束CHECK、规则RULE等。(2)

4、根据数据库中实现数据完整性的级别,可以分为对象级别和整体级别。物件层次:范围是定义表格时,定义之资料库中的表格物件。删除表格会产生限制条件等非法效果。完全级别:单独定义为数据库中的对象,因此单独存在于数据库中,并且可以根据需要绑定到数据库中的表或用户定义的数据类型(例如默认对象、规则)。(3)基于数据完整性的部署方法包括约束、默认值、规则、触发器、存储过程等。第8章实施数据完整性,82实施用于实现表内数据完整性的数据完整性约束。SQLServer支持的约束条件包括非空值约束条件NOTNULL、主键约束条件PRIMARYKEY、唯一约束条件UNIQUE、审计约束条件CHECK、外键约束条件FOR

5、EIGNKEY和默认值约束条件DEFAULT。约束可以在创建表时定义,也可以在修改表时定义(即,向现有表添加约束时),但是同一数据库中不同约束的名称不能相同,约束的范围可以分为定义列时定义的约束的两个类别,称为仅在此列中起作用的行级约束。在表格中个别定义的约束称为表格层级约束。表级约束的声明与列定义无关,当一个约束作用于多个列时,必须使用表级约束。任何约束的定义都不能与表的定义分开,因此删除表会使约束无效。第8章为实现数据完整性,821主键约束条件PRIMARYKEY通常将表中一个列或列组合的数据设置为不同的值,以便唯一标识表中的每个行。这一或多个资料栏称为表格的主索引键,可以强制表格的实体完

6、整性,并消除表格中的重复资料,因此建议您在大部分表格中设定主索引键,以确保资料库的实体完整性。,第8章数据完整性实施,1 .使用enterprise manager管理主键约束条件示例8.1 enterprise manager查看学生库中学生信息表的PRIMARYKEY约束条件。工作阶段:第8章为实现数据的完整性,第2章在T-SQL中生成主键约束案例8.2学生库中生成名为学生图书的表,图书编号定义列级主键,名字,性别,年龄,专业,照片。操作阶段:第8章数据完整性,归纳分析:主键有以下特点:(1)非重复性。将列设置为主键时,主键列(或列组合)可以是标识表中数据的列,因为该列或列组合中的数据值是

7、唯一的。(2)非共享。也就是说,索引键资料栏(或资料栏组合)中的每个资料都不能有空值。(3)唯一性。表示表最多只有一个主键。建立表格时,您可以定义PRIMARYKEY限制来建立主键。命令格式:CREATETABLE表格名称(资料栏名称资料类型CONSTRAINT主索引键限制条件名称primary key clustered | nonclustered,第8章资料完整性实行,命令说明:CONSTRAINT主索引键限制条件名称是选择性的,关键字CONSTRAINT如果省略此选项,则会自动给出约束名称。建议您选取约束名称,以便易于识别。PRIMARYKEY指示该列具有主键约束。CLUSTERED|

8、NONCLUSTERED表示已建立群集或非群集索引。如果忽略,群集索引将默认。如果没有特别指定此选项,并且没有为其他UNIQUE唯一约束条件指定集群索引,则默认情况下,CLUSTERED用于PRIMARYKEY约束条件。第8章为实现数据的完整性,示例8.3在创建表图书信息的同时,定义了名称和图书名称的列级主键“组合”,其他列名为号码、贷款时间、图书返还时间和贷款次数。工作阶段:第8章数据完整性实施,归纳分析:定义表级主键。表级别主键通常位于表定义中所有列定义的后面,可以在列定义中用逗号分隔,如下语法所示:命令格式:CREATETABLE表格名称(资料栏名称1资料类型CONSTRAINT主要索引

9、键限制条件名称primary key clustered | non总计索引)主要索引键资料栏名称1资料类型,主要索引键资料栏名称2资料类型)命令说明: (主要索引键资料栏名称1资料类型,主要索引键资料栏类型,第8章数据完整性实施,3 .删除表的主键约束条件示例8.4从表图书信息中删除主键约束条件。操作步骤:(1)启动查询分析程序并输入SQL语句。关于ALTERTABLE帐簿DROPCONSTRAINT组合(2) F5键,或单击工具栏查询运行图标。第8章是数据完整性,归纳分析:将表的主键从当前列替换为其他列。通常,首先删除主键,然后将其添加到其他列。删除关键约束语法。命令格式:ALTERTAB

10、LE表格名称DROPCONSTRAINT主索引键限制条件名称,第8章资料完整性实行,4 .更改表的主键约束条件实例修改8.5表图书信息,添加编号,将名称和书本名称列级别主键更改为编号和名称。操作步骤:实施第8章数据完整性,归纳分析:更改表的主键约束条件包括向现有表添加新的主键列,使一个表的现有列成为主键,将现有表的主键从当前列更改为另一列,以及删除表的主键。以下语法也适用于列级和表级主键:(1)如果将列添加到现有表并将其设置为主键,并且该表没有主键,则语法为:第8章数据完整性实施,命令格式:ALTERTABLE表名ADD列名数据类型DEFAULT基本表达式|IDENTITY (id,自动标签列

11、)CONSTRAINT主键约束条件名称primary key clustered | nonclustered主键不能包含空值,因此必须指定DEFAULT定义或指定IDENTITY。其他说明与创建关键约束相同。第8章实施数据完整性,并使(2)表中的现有列(或列组合)成为主键,因此表不应有原始主键。替代主键列中的现有数据不能重复或为空,如下语法所示:命令格式:ALTERTABLE表名with check | withnnoncheckaddconstraint约束条件名primary key clustered | nonclustered(列名n)命令说明:(1如果使用了WITHNOCHECK

12、选项,则不执行检查。(2)ADD指定要添加的约束。第8章为数据完整性,822固有约束UNIQUE1。在企业管理员中,从唯一约束案例管理8.6企业管理员的学生数据库中选择学生图书,以设置唯一约束。工作阶段:第8章,实施数据完整性,2 .使用SQL语句生成唯一约束案例8.7,图书编号列指定主键书主键工作步骤,实施第8章数据完整性,归纳分析:唯一性约束条件指定一个或多个列组合值是唯一的,以避免在列中输入重复值。指定为唯一性约束条件的列可以具有空属性。主键值是唯一的,因此主键列不能再设置唯一性约束。唯一性约束最多包含16列。命令格式:CREATETABLE表名(列名数据类型CONSTRAINT约束条件

13、名称UNIQUE)与主键约束条件的定义非常相似,不同之处在于唯一约束条件使用关键字UNIQUE,主键约束条件使用关键字PRIMARYKEY。第8章,数据完整性实施,3 .更改现有表的唯一约束情况8.8表图书添加发布日期列,并限制表中的第二个唯一图书2。在示例8中,第一个唯一约束书约束设置为“多边形”(默认选项),因此第二个唯一约束必须设置为“非群集”选项。工作阶段:第8章数据完整性实施,823审计约束条件CHECK1。使用企业管理员管理审计约束案例8.9使用企业管理员在学生图书中创建CHECK约束,以便设置15岁以下的年龄。工作阶段:第8章,实施数据完整性,2 .使用SQL语句创建核查约束案例

14、8.10表图书并插入数据。其中,列图书编号值为4个字符,第一个字符为字母AE之一,第二个字符为数字15之间的整数,第三个字符和第四个字符为09之间的整数。操作步骤:第8章数据完整性实现,注意:使用查询语句可以知道结果插入成功。如果将插入的数据更改为核查约束范围以外的数据(例如1999),则在报告错误时,读者可以尝试使用。归纳分析:核查约束用于验证输入的数据的值是否正确,并确保仅导入满足核查约束的数据。您可以在一个表格中建立多个检核约束,并且可以在一列中建立多个检核约束,只要它们不相互矛盾即可。建立表格时定义检核约束。第8章数据完整性实施,命令格式:CREATETABLE表名(列名数据类型CON

15、STRAINT约束条件名称CHECKNOTFORREPLICATION(条件表达式)第8章数据完整性实施,命令格式:CREATETABLE表名(使用enterprise manager管理外键约束条件实例8.12使用enterprise manager创建学生成绩表和学生信息表的FOREIGNKEY约束条件。工作阶段:第8章实现数据完整性,第3章。表的外键约束条件实例更改8.14在表图书中添加图书编号列。此列具有外键约束书_约束1,该约束书引用自表学生图书的主键编号。操作步骤:第8章数据完整性,归纳分析:将数据行插入表中时,如果其中一个字段没有指定数值,则该字段的数值将按以下顺序为:如果字段定

16、义具有默认值,则默认值将插入到字段中。字段定义没有默认值,但为空时,将插入空值。如果字段定义没有默认值且不能为空,则将报告错误。显然,对于非空字段,默认值很重要。设置默认值的方法有两种:默认值约束和基础对象。默认值约束条件是对象级别,限制为一个表,删除表将删除默认值约束条件。默认值对象是数据库级别,单独作为数据库对象存在于数据库中,并且可以绑定到任何表(如果需要)。第8章数据完整性实施,归纳分析:(1)向具有默认值约束条件的现有表中添加新列。命令格式:ALTERTABLE表格名称ADDCONSTRAINT预设名称DEFAULT表示式(2)新增表格现有资料栏的预设限制条件命令格式:ALTERTA

17、BLE表格名称ADDCONSTRAINT预设名称DEFAULT表示式FOR资料栏名称命令说明:预设表示式的值是由关键字FOR指定的资料栏(3)删除默认值约束的语法与删除主键相同。第8章数据完整性实现、命令说明:可以使用与WHERE子句中的条件表达式类似的规则表达式、比较表达式、逻辑表达式、LIKE子句等。但是,必须将WHERE子句中的列名更改为以下列开头并遵循SQLServer命名约定的参数:将规则绑定到列时,此参数表示由INSERT语句或UPDATE语句输入的数据,因此,您可以根据需要指定相应的参数名。规则表达式不能参照表中的列或其他数据库对象。第8章数据完整性实现,归纳分析:当表中不再需要

18、规则时,可以将规则与列分离,这称为解除绑定。解除绑定需要系统存储进程sp_unbindmle。命令格式:sp_unbindrule表名。列名|用户定义的数据类型命令说明:解除绑定后,规则仍然存在于数据库系统中,但未与表关联。第8章数据完整性实现,归纳分析:使用默认值的过程类似于使用规则的过程,删除默认绑定生成默认解除绑定的默认值。其中语法项目的表示法和用法也类似。命令格式:CREATEDEFAULT默认对象名AS默认表达式,第8章数据完整性实施,删除845默认实例8.26删除默认对象。作业步骤:(1)启动查询分析器,然后按drop default df _ dook GO(2)F5键,或按一下工具列上的执行查询图示,以输入SQL陈述式。归纳分析:在删除默认值之前解除默认绑定。删除默认命令格式:DROPDEFAULT默认对象名,第8章实施数据完整性,第8.6章summary 1。数据完整性表示数据库中数据的一致性和准确性。SQLServer2000可以通过约束、默认值、规则和触发器确保数据完整性。2.SQLServer支持的约束条件包括非NOTNULL约束条件、主键约束条件PRIMARYKEY、

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论