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

下载本文档

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

文档简介

实现数据的完整性第1页,课件共84页,创作于2023年2月8.1数据完整性概述数据完整性的含义包括以下内容:

1.数值的完整性,指数据类型与取值的正确性。例如取值为整型还是字符型,取值范围是否合理,是否允许空值等。

2.表内数据不相互矛盾。例如指定一个表中的某些数据不得重复。

3.表间数据不相互矛盾,指数据的关联性不被破坏。例如学生库中表学生信息的学号应与学生成绩表中的学号一致。第8章实现数据的完整性

第2页,课件共84页,创作于2023年2月

8.1.1数据完整性的分类数据完整性有不同的分类方法。

(1)按照数据完整性的功能可以将其分为四类:实体完整性,要求表中每一条记录(每一行数据)是惟一的,即它必须至少拥有一个惟一标识以区分不同的数据行。实现方法有:主键约束PRIMARYKEY、惟一性约束UNIQUE、惟一索引UNIQUEINDEX、标识IDENTITY等值域完整性,限定表中输入数据的数据类型与取值范围。实现方法:默认值约束DEFAULT或默认对象、核查约束CHECK、外键约束FOREIGNKEY、规则RULE、数据类型、非空性约束NOTNULL等。引用完整性,指对数据库进行添加、删除、修改数据时,要维护表间数据的一致性。实现方法:外键约束FOREIGNKEY、核查约束CHECK、触发器TRIGGER、存储过程PROCEDURE。

第8章实现数据的完整性

第3页,课件共84页,创作于2023年2月用户定义的完整性,用于实现用户特殊要求的数据规则或格式,例如在学生库中,学生表的出生日期列数据可以规定格式为ddd-dd-dddd形式(d表示0—9之间的数据)。实现方法:默认值DEFAULT、核查约束CHECK、规则RULE等。(2)按照在数据库中实现数据完整性的作用级别,可以将其分为对象级与总体级。对象级:作用范围是数据库的某个表对象,是在定义表的同时定义的,删除表则失法作用,如约束。总体级:是作为数据库的对象单独定义的,因此单独存在于数据库中,需要时可以绑定到数据库的表或用户定义的数据类型中,如默认对象、规则。(3)按照数据完整性的实施方法包括:约束、默认、规则、触发器、存储过程等。

第8章实现数据的完整性

第4页,课件共84页,创作于2023年2月8.2执行数据完整性约束约束用于实现表内数据的完整性,属于对象级。SQLServer支持的约束有如下几种:非空约束NOTNULL,主键约束PRIMARYKEY、惟一约束UNIQUE、核查约束CHECK、外键约束FOREIGNKEY、默认值约束DEFAULT。约束可以在创建表时定义,也可以在修改表时定义(即向已有的表中添加约束),但同一个数据库中不同约束的名称不能相同。按约束的作用范围可以分为两类,在定义列时定义的约束,仅作用于本列,称之为列级约束:表中单独定义的约束,称之为表级约束。表级约束的声明与列的定义无关,当一个约束作用于一个以上的列时,必须使用表级约束。无论那种约束,其定义都离不开表的定义,因此删除表则约束失效。

第8章实现数据的完整性

第5页,课件共84页,创作于2023年2月8.2.1主键约束PRIMARYKEY

通常在表中将一个列或列组合的数据设置成具有各不相同的值,以便能惟一地标识表中的每一行。这样的一列或多列称为表的主键,通过它可强制实现表的实体完整性,消除表的冗余数据,因此为了保证数据库的实体完整性,建议在大多数表中设置主键。第8章实现数据的完整性

第6页,课件共84页,创作于2023年2月1.在企业管理器管理主键约束[实例8.1]使用企业管理器查看学生库的学生信息表的PRIMARYKEY约束。操作步骤:第8章实现数据的完整性

第7页,课件共84页,创作于2023年2月2.在T-SQL中创建主键约束[实例8.2]在学生库创建一个表名为学生图书,定义图书编号为列级主键,列有:姓名、性别、年龄、专业、相片。

操作步骤:

第8章实现数据的完整性

第8页,课件共84页,创作于2023年2月归纳分析:主键具有如下特性:(1)不重复性。当将一列设置为主键时,则数据的取值在该列或列组合中是惟一的,因此主键列(或列组合)可以作为表中数据的标识列。(2)非空性。即主键列(或列组合)的每个数据不能出现空值。(3)惟一性。指一个表中最多只有一个主键。创建表时可通过定义PRIMARYKEY约束来创建主键。

命令格式:

CREATETABLE表名

(列名数据类型CONSTRAINT主键约束名PRIMARYKEY[CLUSTERED|NONCLUSTERED]第8章实现数据的完整性

第9页,课件共84页,创作于2023年2月

命令说明:

CONSTRAINT主键约束名为可选项,关键字CONSTRAINT用于指定其后面的约束名称。如省略本选项,则系统自动给出一个约束名。建议选择约束名以便于识别。PRIMARYKEY表示该列具有主键约束。

CLUSTERED|NONCLUSTERED表示建立聚簇索引或非聚簇索引,省略此项则系统默认为聚簇索引。如果没有特别指定本选项,且没有为其他UNIQUE惟一约束指定聚簇索引,则默认对该PRIMARYKEY约束使用CLUSTERED。

第8章实现数据的完整性

第10页,课件共84页,创作于2023年2月[实例8.3]创建一个表图书信息,同时定义姓名和图书名称为列级主键“组合”,其他列名为编号,借书时间、还书时间、借书数量。

操作步骤:

第8章实现数据的完整性

第11页,课件共84页,创作于2023年2月归纳分析:定义表级主键。表级主键一般位于表定义中所有列定义之后,与列定义可以用逗号相隔,语法如下。命令格式:

CREATETABLE表名

(列名1数据类型CONSTRAINT主键约束名

PRIMARYKEY[CLUSTERED|NONCLUSTERED],(聚集索引非聚集索引)

主键列名1数据类型,主键列名2数据类型)

命令说明:

(主键列名1数据类型,主键列名2数据类型)表示该表级主键可以作用于组合在一起的多列所构成的列组合。

第8章实现数据的完整性

第12页,课件共84页,创作于2023年2月3.删除表的主键约束[实例8.4]

删除表图书信息中的主键约束。

操作步骤:(1)

启动“查询分析器”,输入如下SQL语句:

ALTERTABLE图书信息

DROPCONSTRAINT组合(2)按“F5”键或单击工具栏“执行查询”图标。

第8章实现数据的完整性

第13页,课件共84页,创作于2023年2月归纳分析:将表的主键由当前列换到另一列。一般先删除主键,然后在另一列上添加主键。删除主键约束语法。

命令格式:

ALTERTABLE表名

DROP[CONSTRAINT]主键约束名第8章实现数据的完整性

第14页,课件共84页,创作于2023年2月4.更改表的主键约束[实例8.5]修改表图书信息,添加编号,将姓名和图书名称为列级主键改为编号和姓名。

操作步骤:

第8章实现数据的完整性

第15页,课件共84页,创作于2023年2月归纳分析:更改表的主键约束包括在现有表中添加新的一个主键列、使一个表的某现有列成为主键、将现有表的主键由当前列换到另一列、删除表的主键等。以下语法对列级与表级主键同样适用。

(1)在现有表中添加一列,同时将其设置为主键,要求表中原先没有主键,语法如下。第8章实现数据的完整性

第16页,课件共84页,创作于2023年2月命令格式:

ALTERTABLE表名

ADD列名数据类型

[DEFAULT默认表达式]|IDENTITY[(标识,自动标号列)]][CONSTRAINT主键约束名]PRIMARYKEY[CLUSTERED|NONCLUSTERED]

命令说明:

ALTERTABLE只允许添加可包含空值或指定了DEFAULT定义的列。因为主键不能包含空值,所以需要指定DEFAULT定义,或指定IDENTITY。其他说明与创建主键约束类同。

第8章实现数据的完整性

第17页,课件共84页,创作于2023年2月(2)使表中现有的一列(或列组合)成为主键,要求表中原先没有主键。且备选主键列中的已有数据不得重复或为空,语法如下。

命令格式:

ALTERTABLE表名

[WITHCHECK|WITHNONCHECK]ADD[CONSTRAINT约束名]PRIMARYKEY[CLUSTERED|NONCLUSTERED](列名n))

命令说明:

(1)WITHCHECK为默认选项,该选项表示将使用新的主键约束来检查表中已有数据是否符合主键条件;如果使用了WITHNOCHECK选项,则不进行检查。

(2)ADD指定要添加的约束。

第8章实现数据的完整性

第18页,课件共84页,创作于2023年2月8.2.2惟一约束UNIQUE1.在企业管理器中管理惟一约束[实例8.6]在企业管理器的学生数据库中,选定学生图书建立惟一约束。操作步骤:

第8章实现数据的完整性

第19页,课件共84页,创作于2023年2月

2.用SQL语句创建惟一约束[实例8.7]建立表图书,其中列图书编号包含一个主键图书主键

操作步骤:

第8章实现数据的完整性

第20页,课件共84页,创作于2023年2月

归纳分析:惟一性约束指定一个或多个列的组合的值具有惟一性,以防止在列中输入重复的值。惟一性约束指定的列可以有空属性。由于主关键字值是具有惟一性的,因此主关键字列不能再设定惟一性约束。惟一性约束最多由16个列组成。命令格式:

CREATETABLE表名

(列名数据类型CONSTRAINT约束名

UNIQUE

)

显然,惟一约束与主键约束的定义十分相似,区别仅在于惟一约束采用关键字UNIQUE而主键约束采用关键字PRIMARYKEY。

第8章实现数据的完整性

第21页,课件共84页,创作于2023年2月3.更改现有表的惟一约束[实例8.8]在表图书中添加一列出版日期,同时对该列设置表中第2个惟一约图书约束2。因为在例8中已经将第1个惟一约束图书约束设置为聚自选项(默认选项),因此第2个惟一约束必须设置为非聚簇选项。

操作步骤:

第8章实现数据的完整性

第22页,课件共84页,创作于2023年2月8.2.3核查约束CHECK

1.使用企业管理器管理核查约束[实例8.9]使用企业管理器为学生图书中设置年龄不能小于15岁,创建CHECK约束。操作步骤:

第8章实现数据的完整性

第23页,课件共84页,创作于2023年2月2.使用SQL语句创建核查约束[实例8.10]创建表图书并插入数据,其中的列图书编号的取值要求为4个字符,第1个字符为字母A—E中的一个,第2个字符为数字1~5之间的整数,第3个和第4个字符均为0—9之间的整数。

操作步骤:

第8章实现数据的完整性

第24页,课件共84页,创作于2023年2月注意:利用查询语句可知结果插入成功。若将插入的数据改为核查约束范围以外的数据,例如1999,则系统报错,请读者自行试一试。

归纳分析:核查约束用于检查输入数据的取值是否正确,只有符合核查约束条件的数据才能输入。在一个表中可以建立多个核查约束,在一列上也可以建立多个核查约束,只要它们不相互矛盾。创建表时定义核查约束。

第8章实现数据的完整性

第25页,课件共84页,创作于2023年2月命令格式:

CREATETABLE表名

(列名数据类型

[[CONSTRAINT约束名]CHECK[NOTFORREPLICATION](条件表达式))第8章实现数据的完整性

第26页,课件共84页,创作于2023年2月命令格式:

CREATETABLE表名

(列名数据类型

[[CONSTRAINT约束名]CHECK[NOTFORREPLICATION](条件表达式))第8章实现数据的完整性

第27页,课件共84页,创作于2023年2月8.2.4外健约束FOREIGNKEY1.使用企业管理器管理外键约束[实例8.12]使用企业管理器创建学生成绩表和学生信息表的FOREIGNKEY约束。操作步骤:

第8章实现数据的完整性

第28页,课件共84页,创作于2023年2月3.更改表的外键约束[实例8.14]在表图书中增加一列图书编号,该列具有外键约束图书_约束1,它引自表学生图书中的主键编号。操作步骤:

第8章实现数据的完整性

第29页,课件共84页,创作于2023年2月归纳分析:当向表中插入一行数据时,若没有指定其中某一列字段的数值,则该字段的数值按如下次序取值:

若该字段定义有默认值,则系统将默认值插入字段。若该字段定义没有默认值,但允许空,则插入空值。若该字段定义没有默认值,又不允许空,则报错。显然,对于非空字段,默认值极为重要。默认值有两种设置方式,默认值约束与默认对象。默认值约束是对象级的,其作用范围仅限于一个表,删除表则删除默认值约束。默认值对象是数据库级的,作为数据库对象单独存在于数据库中,需要时可以绑定到任何一个表中。第8章实现数据的完整性

第30页,课件共84页,创作于2023年2月归纳分析:(1)在现有表中添加新的一列,该列具有默认值约束。命令格式:

ALTERTABLE表名

ADD[CONSTRAINT默认名]DEFAULT表达式(2)为表中现有列添加默认约束

命令格式:

ALTERTABLE表名

ADD[CONSTRAINT默认名]DEFAULT表达式FOR列名

命令说明:默认表达式的值用于关键字FOR所指定的列名。(3)删除默认值约束的语法同删除主键。第8章实现数据的完整性

第31页,课件共84页,创作于2023年2月命令说明:规则表达式,与WHERE子句中的条件表达式类似,可以使用比较表达式、逻辑表达式、LIKE子句等,所不同的是需要将WHERE子句中的列名改为一个以@开头并符合SQLServer命名规则的参数。将规则绑定到列上时,该参数代表INSERT语句或UPDATE语句所输入的数据,因此其参数名字可以随意。注意:

规则表达式不能引用表中的列或其他数据库对象。第8章实现数据的完整性

第32页,课件共84页,创作于2023年2月归纳分析:当表中不再需要规则时,可以将规则与列分离,称为解除绑定。解除绑定需要使用系统存储过程sp_unbindmle。

命令格式:

sp_unbindrule‘表名.列名’|‘用户定义的数据类型’

命令说明:解除绑定后规则仍然存在于数据库系统中,只不过它与表的联系没有了。

第8章实现数据的完整性

第33页,课件共84页,创作于2023年2月归纳分析:使用默认的过程与使用规则的过程类似,依次为创建默认一绑定默认一解除绑定一删除默认,其中语法项目的表述及用法也类似。

命令格式:

CREATEDEFAULT默认对象名称AS默认表达式第8章实现数据的完整性

第34页,课件共84页,创作于2023年2月8.4.5删除默认[实例8.26]删除默认对象。

操作步骤:(1)启动“查询分析器”,输入如下SQL语句:

DROPDEFAULTdf_图书

GO

(2)按“F5”键或单击工具栏“执行查询”图标。

归纳分析:删除默认之前要先解除默认绑定。删除默认的命令格式:

DROPDEFAULT默认对象名称第8章实现数据的完整性

第35页,课件共84页,创作于2023年2月8.6本章总结1.数据的完整性指数据库中数据的一致性与正确性。在SQLServer2000中,可以通过约束、默认、规则、触发器等来达到保证数据完整性的目的。2.SQLServer支持的约束有如下几种:非空约束NOTNULL,主键约束PRIMARYKEY、惟一约束UNIQUE、核查约束CHECK、外键约束FOREIGNKEY、默认值约束DEFAULT。3.主键具有不重复性、非空性、惟一性的特性。4.惟一性约束指定一个或多个列的组合的值具有惟一性,以防止在列中输入重复的值。惟一性约束指定的列可以有空属性。5.核查约束用于检查输入数据的取值是否正确,只有符合核查约束条件的数据才能输入。在一个表中或列中可以建立多个核查约束,只要它们不相互矛盾。

第8章实现数据的完整性

第36页,课件共84页,创作于2023年2月7.什么是惟一性约束?在数据完整性中使用时应注意的问题是什么?8.什么是核查约束?在数据完整性中使用时应注意的问题是什么?9.什么是外键约束?在数据完整性中使用时应注意的问题是什么?10.什么是默认值约束?在数据完整性中使用时应注意的问题是什么?11.什么是规则?如何使用规则?12.什么是默认?如何使用默认?13.试说明自动编号的特点?

第8章实现数据的完整性

第37页,课件共84页,创作于2023年2月(11)建立表商品,其中型号默认值为1111,然后在该表中增加一列出厂日期默认值为“2004/1/1”,最后为表中的列品种添加默认值为60完成插入表。(12)创建规则range1,使数据范围在10-200之间。(13)创建表商品1字段为商品编号,品种,型号,再将12题创建的规则绑定在表中的品种列上。(14)解除表商品中列品种所绑定的规则。(15)建立默认df商品,其默认值为5。再将该默认对象绑定到表销售的列包装数上,然后插入数据。(16)建立表商品1,字段为商品序号和商品名称,表中“商品序号”为自动编号属性,然后再该表中插入数据,注意不能向“商品序号”插入数据。

第8章实现数据的完整性

第38页,课件共84页,创作于2023年2月命令说明:

(1)NOTFORREPLICATION:该选项表示在复制表时禁用核查约束。

(2)CHECK:该关键字表示定义的约束为核查约束。

(3)条件表达式:为核查准则,一般是条件表达式,与WHERE子句中的查询条件表达式类似,可以采用:算术表达式,如:数量>1000,逻辑表达式,如:s数量>1000AND数量<3000LIKE子句,如:编号LIKE‘[a-z][0-9][0-9][10—9]’

IN或NOTIN,如:性别(‘M’,‘F’,)BETWEEN或NOTBETWEEN,如:数量BETWEEN1000AND3000

第8章实现数据的完整性

第39页,课件共84页,创作于2023年2月3.更改表的核查约束[实例8.11]在实例8.10所建立的表图书中插入一列包装数,要求该列为1位整数,且取值范围在1~6之间,并在该列设置核查约束图书检查约束2,以实现检查包装数输入数据正确性。

操作步骤:

第8章实现数据的完整性

第40页,课件共84页,创作于2023年2月

归纳分析:在现有表中添加新的一列,该列具有核查约束。命令格式:

ALTERTABLE表名

ADD列名数据类型

[CONSTRAINT检查约束名]CHECK[NOTFORREPLICATION](检查约束条件)4.删除核查约束删除核查约束的语法与删除主键约束相同。第8章实现数据的完整性

第41页,课件共84页,创作于2023年2月8.2.4外健约束FOREIGNKEY1.使用企业管理器管理外键约束[实例8.12]使用企业管理器创建学生成绩表和学生信息表的FOREIGNKEY约束。操作步骤:

第8章实现数据的完整性

第42页,课件共84页,创作于2023年2月2.在T-SQL中创建外键约束[实例8.13]建表图书,其中列编号具有外键约束名为图书_约束,它引自表学生图书的对应同名列。

操作步骤:

第8章实现数据的完整性

第43页,课件共84页,创作于2023年2月归纳分析:外键是最能体现关系型数据库引用完整性特点的约束。将一个表的一列(或列组合)定义为引用其他表的主键或惟一约束列,则引用表中的这个列(或列组合)就称为外键。被引用的表称为主键约束(或惟一约束)表;引用表称为外键约束表。外键的这种引用关系如图8.11所示。命令格式:

CREATETABLE表名

(列名数据类型

[CONSTRAINT约束名]FOREIGNKEYREFERENCES外键表名(对应列名)

第8章实现数据的完整性

第44页,课件共84页,创作于2023年2月命令说明:外键表名(对应列名):必须是主键或惟一约束列。关于外键有如下几点需要注意:(1)由外键所引用的列(或列组合)必须是主键或具有惟一约束的列,其数据值不能重复。(2)外键列中的数据介许重复。

(3)外键也可以引用其自身所在表中的主键或惟一约束列,这种引用称为自引用。

(4)外键仅能引用同一数据库下的某个表。

(5)一个表可以有多个外键约束。

(6)具有外键约束的列(或列组合),其数据类型及其列组合中的列数必须与它所引用的主键或惟一约束列(或列组合)相同,但列名不必一定相同。

第8章实现数据的完整性

第45页,课件共84页,创作于2023年2月3.更改表的外键约束[实例8.14]在表图书中增加一列图书编号,该列具有外键约束图书_约束1,它引自表学生图书中的主键编号。操作步骤:

第8章实现数据的完整性

第46页,课件共84页,创作于2023年2月归纳分析:修改或删除外键所对应的主键时,都将受到外键约束关系的限制而使该操作不可实现。例如,假设学生图书表与图书表具有外键关系,如果在学生图书表中删除一条记录,而由于这条记录的主键学生图书在图书表中被使用,则将导致这两个表之间关联的完整性被破坏,图书表中该姓名等记录因为与学生图书表中的数据没有链接而变得孤立了。外键约束防止了这种情况的发生。如果主键表中数据的更改使之与外键表中数据的链接失效,则这种更改是不能实现的,从而确保了引用完整性。若要成功地更改或删除外键约束所对应的主键行记录,则可以先在外键表中删除或更改外键数据,然后将外键链接到另一个不同的主键数据上去。同样,删除主键所在表时,必须首先删除该主键所对应的外键所在表,或删除外键关系。

第8章实现数据的完整性

第47页,课件共84页,创作于2023年2月命令格式:

ALTERTABLE表名

(ADD列名数据类型

[[CONSTRAINT约束名]FOREIGNKEYREFERENCES外键表名(对应列名)

第8章实现数据的完整性

第48页,课件共84页,创作于2023年2月8.2.5默认值约束1.使用企业管理器管理默认值约束[实例8.15]在企业管理器中将学生库中的图书信息表中借书时间,设置默认值为‘2007年01月01日’。操作步骤:

第8章实现数据的完整性

第49页,课件共84页,创作于2023年2月归纳分析:当向表中插入一行数据时,若没有指定其中某一列字段的数值,则该字段的数值按如下次序取值:

若该字段定义有默认值,则系统将默认值插入字段。若该字段定义没有默认值,但允许空,则插入空值。若该字段定义没有默认值,又不允许空,则报错。显然,对于非空字段,默认值极为重要。默认值有两种设置方式,默认值约束与默认对象。默认值约束是对象级的,其作用范围仅限于一个表,删除表则删除默认值约束。默认值对象是数据库级的,作为数据库对象单独存在于数据库中,需要时可以绑定到任何一个表中。第8章实现数据的完整性

第50页,课件共84页,创作于2023年2月创建表时定义默认值约束。命令格式:

CREATETABLE表名

(列名数据类型

[CONSTRAINT默认名]DEFAULT表达式)第8章实现数据的完整性

第51页,课件共84页,创作于2023年2月命令说明:

(1)DEFAULT关键字用以指明其后的常数表达式,为该列的默认值,常数表达式中除了允许使用常数、NULL值和表达式作为默认值外,还可以使用SQLServer系统函数如current_user、system_user、user、getdate()等的值作为默认值。默认值的数据类型必须与列定义的数据类型一致,且不能与CHECK约束矛盾。

(2)DEFAULT约束定义的默认值仅在执行INSERT操作插入数据时生效。

(3)一列至多有一个默认值,其中包括NULL值。

(4)具有IDENTITY属性或TIMESTAMP数据类型属性的列不能使用默认值,text与image类型的列只能以NULL为默认值。

第8章实现数据的完整性

第52页,课件共84页,创作于2023年2月2.更改表的默认约束

[实例8.16]创建图书登记表,列名有图书编号、图书名称、借阅次数和图书类别。借阅次数设置默认值为1。然后在图书登记中添加借阅日期列,并设置默认值为2007年01月01日,在向表中输入数据查看结果。操作步骤:

第8章实现数据的完整性

第53页,课件共84页,创作于2023年2月归纳分析:(1)在现有表中添加新的一列,该列具有默认值约束。命令格式:

ALTERTABLE表名

ADD[CONSTRAINT默认名]DEFAULT表达式(2)为表中现有列添加默认约束

命令格式:

ALTERTABLE表名

ADD[CONSTRAINT默认名]DEFAULT表达式FOR列名

命令说明:默认表达式的值用于关键字FOR所指定的列名。(3)删除默认值约束的语法同删除主键。第8章实现数据的完整性

第54页,课件共84页,创作于2023年2月8.3执行规则8.3.1使用企业管理器管理规则[实例8.17]在企业管理器中展开学生库,单击“规则”,设置规则为0-100之间的数,并查看其属性。操作步骤:

第8章实现数据的完整性

第55页,课件共84页,创作于2023年2月8.3.2创建规则[实例8.18]在学生库中创建一个range1的规则对象,其值为以‘CT’开头的字符串。

操作步骤:

第8章实现数据的完整性

第56页,课件共84页,创作于2023年2月归纳分析:规则的作用类似于核查约束,若将一个规则绑定到指定列上,则可以检查该列的数据是否符合规则的要求。规则与核查约束的主要区别在于一列只能绑定一个规则,但却可以设置多个核查约束。规则的优点是仅创建一次就可以绑定到数据库的多个表的列上,使同一数据库中所有表的不同列共享。规则还可以绑定到同一数据库中一个以上的用户定义的数据类型上。

命令格式:

CREATERULE规则名称AS规则表达式第8章实现数据的完整性

第57页,课件共84页,创作于2023年2月命令说明:规则表达式,与WHERE子句中的条件表达式类似,可以使用比较表达式、逻辑表达式、LIKE子句等,所不同的是需要将WHERE子句中的列名改为一个以@开头并符合SQLServer命名规则的参数。将规则绑定到列上时,该参数代表INSERT语句或UPDATE语句所输入的数据,因此其参数名字可以随意。注意:

规则表达式不能引用表中的列或其他数据库对象。第8章实现数据的完整性

第58页,课件共84页,创作于2023年2月8.3.3绑定规则[实例8.19]将规则ranger1,绑定到“图书登记”中的‘图书类别’列。

操作步骤:

第8章实现数据的完整性

第59页,课件共84页,创作于2023年2月归纳分析:规则创建后,它仅仅是一个数据库对象,与其他数据库对象并没有联系。要将规则应用于一个表(或用户定义的数据类型)中,必须将其与表中的指定列(或用户定义的数据类型)相结合,称之为将规则绑定(bind)到列(或用户定义的数据类型),或称绑定规则。绑定规则需要使用系统存储过程sp_bindrule。命令格式:

sp_bindrulerule_name,‘表名.列名’

|‘用户定义的数据类型’

注意:绑定规定时,不要与列约束相矛盾。

第8章实现数据的完整性

第60页,课件共84页,创作于2023年2月8.3.4解除规则[实例8.20]解除表图书登记中列图书类别所绑定的规则。

操作步骤:(1)

启动“查询分析器”,输入如下SQL语句:

sp_unbindrule'图书登记.图书类别'

(2)按“F5”键或单击工具栏“执行查询”图标。

第8章实现数据的完整性

第61页,课件共84页,创作于2023年2月归纳分析:当表中不再需要规则时,可以将规则与列分离,称为解除绑定。解除绑定需要使用系统存储过程sp_unbindmle。

命令格式:

sp_unbindrule‘表名.列名’|‘用户定义的数据类型’

命令说明:解除绑定后规则仍然存在于数据库系统中,只不过它与表的联系没有了。

第8章实现数据的完整性

第62页,课件共84页,创作于2023年2月8.3.4删除规则[实例8.21]删除range1。

操作步骤:(1)启动“查询分析器”,输入如下SQL语句:

DROPRULErange1

(2)按“F5”键或单击工具栏“执行查询”图标。

归纳分析:删除规则的前提是解除数据库中所有表的绑定。

命令格式:

DROPRULE规则对象名第8章实现数据的完整性

第63页,课件共84页,创作于2023年2月8.4执行默认8.4.1使用企业管理器管理默认值对象[实例8.22]在企业管理器中展开学生库,单击“默认”,设置默认值为2,并查看其属性。操作步骤:归纳分析:

默认值对象与规则类似,默认值对象(简称默认)的优点也是仅创建一次就可以绑定到数据库的多个表的列或用户自定义数据类型中,使它们共享默认。

第8章实现数据的完整性

第64页,课件共84页,创作于2023年2月8.4.2创建默认[实例8.23]建立默认df_图书,其默认值为1。

操作步骤:(1)启动“查询分析器”,输入如下SQL语句:

CREATEDEFAULTdf_图书AS1GO(2)按“F5”键或单击工具栏“执行查询”图标。

第8章实现数据的完整性

第65页,课件共84页,创作于2023年2月归纳分析:使用默认的过程与使用规则的过程类似,依次为创建默认一绑定默认一解除绑定一删除默认,其中语法项目的表述及用法也类似。

命令格式:

CREATEDEFAULT默认对象名称AS默认表达式第8章实现数据的完整性

第66页,课件共84页,创作于2023年2月8.4.3绑定默认[实例8.24]将[实例8.23]创建的默认对象绑定到表图书信息的列借书数量上,然后插入数据。

操作步骤:

第8章实现数据的完整性

第67页,课件共84页,创作于2023年2月归纳分析:命令格式:

Sp_bindefault默认对象名称,‘表名.列名’|‘用户默认义的数据类型’

第8章实现数据的完整性

第68页,课件共84页,创作于2023年2月8.4.4解除绑定[实例8.25]解除表图书信息的绑定默认对象。

操作步骤:(1)启动“查询分析器”,输入如下SQL语句:

sp_unbindefault‘图书信息.借书数量’(2)按“F5”键或单击工具栏“执行查询”图标。

归纳分析:解除默认绑定的命令格式:

sp_unbindefault‘表名.列名’|‘用户默认的数据类型’

[,标志变量]

第8章实现数据的完整性

第69页,课件共84页,创作于2023年2月8.4.5删除默认[实例8.26]删除默认对象。

操作步骤:(1)启动“查询分析器”,输入如下SQL语句:

DROPDEFAULTdf_图书

GO

(2)按“F5”键或单击工具栏“执行查询”图标。

归纳分析:删除默认之前要先解除默认绑定。删除默认的命令格式:

DROPDEFAULT默认对象名称第8章实现数据的完整性

第70页,课件共84页,创作于2023年2月8.5使用自动编号IDENTITY[实例8.27]建立表商品,表中“商品序号”为自动编号属性起始值为2000,增量为1,商品名称和品种列,然后再该表中插入数据,注意不能向“商品序号”插入数据。

操作步骤:

第8章实现数据的完整性

第71页,课件共84页,创作于2023年2月归纳分析:

SQLServer为自动进行顺序编号而引入了自动编号的IDENTITY属性。当需要对某一列输入的数据进行有规律的顺序编号且保证每个编号惟一时,建议读者不要采用手工或以程序代码的形式输入编号,而最好是采用IDENTITY,这样既方便准确,速度又快。具有IDENTITY属性的列称为标识列,其取值称为标识值,具有如下特点:

(1)IDENTITY列的数据类型只能为tinyint、smallint、int、bigint、numeric、decimal。当为numeric、decimal类型时,不允许有小数位。

(2)当用户向表中插入新的一行记录时,不必也不能向具有IDENTITY属性的列输入数据,系统将自动在该列添加一个按规定间隔递增(或递减)的数据。

第8章实现数据的完整性

第72页,课件共84页,创作于2023年2月(3)每个表至多有一列具有IDENTITY属性,该列不能为空、不允许具有默认值、不能由用户更新。因此,IDENTITY列常可以作为主键使用。(4)使用IDENTITY时,可以设置种子(seed)与增量(increment)。“种子”表示系统为表中第一条记录添加的自动编号数字。“增量”表示相邻两条记录之间后一个自动编号数字减去前一个自动编号数字的数值差,正值表示后一数据大于前一数据,反之后一数据小于前一数据。必须同时指定种子和增量,或者二者都不指定。如果二者都未指定,则取默认值(1,1)。当对表中数据进行删除操作后,在标识值之间可能会产生数量不等的差值。建立表时定义标识列命令格式:

CREATETABLE表名

(列名,数据类型[IDENTITY[(种子,增量)]]NOTNULL[..n]

第8章实现数据的完整性

第73页,课件共84页,创作于2023年2月8.6本章总结1.数据的完整性指数据库中数据的一致性与正确性。在SQLServer2000中,可以通过约束、默认、规则、触发器等来达到保证数据完整性的目的。2.SQLServer支持的约束有如下几种:非空约束NOTNULL,主键约束PRIMARYKEY、惟一约束UNIQUE、核查约束CHECK、外键约束FOREIGNKEY、默认值约束DEFAULT。3.主键具有不重复性、非空性、惟一性的特性。4.惟一性约束指定一个或多个列的组合的值具有惟一性,以防止在列中输入重复的值。惟一性约束指定的列可以有空属性。5.核查约束用于检查输入数据的取值是否正确,只有符合核查约束条件的数据才能输入。在一个表中或列中可以建立多个核查约束,只要它们不相互矛盾。

第8章实现数据的完整性

第74页,课件共84页,创作于2023年2月6.外键是最能体现关系型数据库引用完整性特点的约束。将一个表的一列(或列组合)定义为引用其他表的主键或惟一约束列,则引用表中的这个列(或列组合)就称为外键。7.当向表中插入一行数据时,若没有指定其中某一列字段的数值,则该字段的数值按系统默认值插入。若该字段定义没有默认值,但允许空,则插入空值。8.规则的作用类似于核查约束,若将一个规则绑定到指定列上,则可以检查该列的数据是否符合规则的要求。规则与核查约束的主要区别在于一列只能绑定一个规则,但却可以设置多个核查约束。第8章实现数据的完整性

第75页,课件共84页,创作于2023年2月9.使用默认的过程与使用规则的过程类似,依次为创建默认一绑定默认一解除绑定一删除默认,其中语法项目的表述及用法也类似。10.SQLServer为自动进行顺序编号而引入了自动编号的IDENTITY属性。当需要对某一列输入的数据进行有规律的顺序编号且保证每个编号惟一时,最好是采用IDENTITY,这样既方便准确,速度又快。第8章实现数据的完整性

第76页,课件共84页,创作于2023年2月8.7思考与实训8.7.1思考1.数据完整性的包括哪些内容?2.按照数据完整性的功能可以将其分为几类?是什么?3.按照在数据库中实现数据完整性的作用级别分为几级?是什么?4.SQLServer支持的约束有如下几种?是什么?5.按约束的作用范围可以分为几类?是什么?

温馨提示

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

最新文档

评论

0/150

提交评论