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

下载本文档

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

文档简介

1、第5章 数据完整性(一)本章内容5.1 数据完整性概述5.2 使用规则实施数据完整性5.3 使用默认值实施数据完整性5.4 使用约束实施数据完整性5.1 数据完整性概述 数据完整性防止数据库中存在不符合语义规定的数据和防止因错误信息的输入输出造成无效操作或错误信息而提出的。数据完整性有4种类型:l 实体完整性(Entity Integrity)、l 域完整性(Domain Integrity)、l 参照完整性(Referential Integrity)、l 用户定义的完整性(User-defined Integrity)。 在SQL Server中可以通过各种规则(Rule)、默认(Defa

2、ult)、约束(Constraint)和触发器(Trigger)等数据库对象来保证数据的完整性。5.2 使用规则实施数据完整性5.2.1 创建规则5.2.2 查看和修改规则5.2.3 规则的绑定与松绑5.2.4 删除规则5.2.1 创建规则 规则(Rule)就是数据库中对存储在表的列或用户定义数据类型中的值的规定和限制。 规则是单独存储的独立的数据库对象。 规则和约束可以同时使用,表的列可以有一个规则及多个约束。规则与检查约束在功能上相似,但在使用上有所区别。检查约束是在CREATE TABLE或ALTER TABLE语句中定义的,嵌入了被定义的表结构,即删除表的时候检查约束也就随之被删除。而

3、规则需要用CREATE RULE语句定义后才能使用,是独立于表之外的数据库对象,删除表并不能删除规则,需要用DROP RULE语句才能删除。相比之下,使用在CREATE TABLE或ALTER TABLE语句中定义的检查约束是更标准的限制列值的方法,但检查约束不能直接作用于用户定义数据类型。 8.2 8.2 使用规则实施数据完整性使用规则实施数据完整性1用企业管理器创建规则8.2.1 8.2.1 创建规则创建规则在企业管理器中选择数据库对象“规则”,单击右键从快捷菜单中选择“新建规则”选项,即会弹出如图所示的“规则属性”对话框。输入规则名称和表达式之后,单击“确定”按钮,即完成规则的创建。2用

4、CREATE RULE语句创建规则 CREATE RULE语句用于在当前数据库中创建规则,其语法格式如下: CREATE RULE rule_name AS condition_expression注注: : condition_expressioncondition_expression中的表达式的变量必须以中的表达式的变量必须以”开头开头, ,通常情况下通常情况下, ,该变量的名称应与规则所关联的列或用该变量的名称应与规则所关联的列或用户定义的数据类型具有相同的名字户定义的数据类型具有相同的名字. .8.2.1 8.2.1 创建规则创建规则CREATE RULE hire_date_rul

5、eAS hire_date=1980-01-01 and hire_date属性5.2.2 查看和修改规则8.2 8.2 使用规则实施数据完整性使用规则实施数据完整性8.2.2 8.2.2 查看和修改规则查看和修改规则例5-5 查看规则hire_date_rule的文本信息 EXEC sp_helptext hire_date_rule2用系统存储过程sp_helptext 查看规则运行结果如图所示运行结果如图所示 5.2.3 规则的绑定与松绑需要将规则与数据库表或用户定义对象联系起来,才能发生作用。联系的方法称为绑定,所谓绑定就是指定规则作用于哪个表的哪一列或哪个用户定义数据类型。表的一列或

6、一个用户定义数据类型只能与一个规则相绑定,而一个规则可以绑定多对象,这正是规则的魅力所在。解除规则与对象的绑定称为松绑。8.2.3 8.2.3 规则的绑定与松绑规则的绑定与松绑在企业管理器中,展开数据库(Sales)文件夹,鼠标单击“规则”选项,在右窗格中选择要进行绑定的规则(hire_date),单击鼠标右键,从快捷菜单中选择“属性” 菜单项,打开“规则属性”对话框,如图8-4所示。图中的“绑定UDT(U)”按钮用于绑定规则到用户定义的数据类型,“绑定列(B)”按钮用于绑定规则到表的列。1用企业管理器管理规则的绑定和松绑8.2.3 8.2.3 规则的绑定与松绑规则的绑定与松绑 在图8-4中单

7、击“绑定UDT(U)”按钮,则出现“将绑定规则到用户定义的数据类型”对话框,如图8-5所示;8.2.3 8.2.3 规则的绑定与松绑规则的绑定与松绑 单击“绑定列(B)”按钮,则出现如图8-6所示的“将绑定规则到列”对话框。 在“将规则绑定列”对话框的左边“未绑定的列”列表框中选择一列“添加”到右边“绑定列”列表框中,就实现规则绑定了。 同样,去掉“将规则绑定到用户定义的数据类型”对话框的列表框的“绑定”列下的标识或删除“将规则绑定列”对话框的右边“绑定列”列表框的列,就实现了规则的松绑操作。8.2.3 8.2.3 规则的绑定与松绑规则的绑定与松绑2用系统存储过程sp_bindrule绑定规则

8、 系统存储过程sp_bindrule 可以绑定一个规则到表的一个列或一个用户定义数据类型上。sp_bindrule rule, object_name , futureonly 注:注:futureonlyfutureonly项仅在绑定规则到用户定义数据类型上时起作项仅在绑定规则到用户定义数据类型上时起作用。当指定该项时,仅以后使用此用户定义数据类型的列会应用。当指定该项时,仅以后使用此用户定义数据类型的列会应用新规则,而当前已经使用此数据类型的列则不受影响。用新规则,而当前已经使用此数据类型的列则不受影响。8.2.3 8.2.3 规则的绑定与松绑规则的绑定与松绑例5-7 定义用户定义数据类型

9、pat_char,将例8-4创建的规则my_character_rule绑定到pat_var上。EXEC sp_addtype pat_char,varchar(10),NOT NULLGOEXEC sp_bindrule my_character_rule, pat_char, futureonly 例5-6 将例8-1创建的规则hire_date_rule绑定到employee表的hire_date列上。EXEC sp_bindrule hire_date_rule,employee.hire_date8.2.3 8.2.3 规则的绑定与松绑规则的绑定与松绑EXEC sp_bindrule

10、 sex_rule, employee.sex例5-8 绑定例8-2创建的规则sex_rule 到employee 表的字段sex。UPDATEUPDATE employee employee SETSET sex=xx sex=xx 不能实现不能实现8.2.3 8.2.3 规则的绑定与松绑规则的绑定与松绑系统存储过程sp_unbindrule可解除规则与列或用户定义数据类型的绑定,其语法格式如下:sp_unbindrule object_name , futureonly 3用系统存储过程sp_unbindrule 解除规则的绑定例5-9 解除例8-6和例8-7绑定在employee表的hi

11、re_date列和用户定义数据类型pat_char上的规则。EXEC sp_unbindrule employee.hire_date运行结果如下:(所影响的行数为 1 行)已从表的列上解除了规则的绑定。EXEC sp_unbindrule pat_char,futureonly运行结果如下:(所影响的行数为 1 行)已从数据类型上解除了规则的绑定。5.2.4 删除规则 使用DROP RULE语句删除当前数据库中的一个或多个规则。DROP RULE rule_name,.n 注意:在删除一个规则前,必须先将与其绑定的对象解除绑定。 例5-10 删除例8-1和8-2中创建的规则。DROP RUL

12、E sex_rule,hire_date_rule 5.3.1 创建默认值5.3.2 查看默认值5.3.3 默认值的绑定与松绑5.3.4 删除默认值5.3 使用默认值实施数据完整性8.3 8.3 使用默认值实施数据完整性使用默认值实施数据完整性5.3.1 创建默认值 默认值(Default)是用户输入记录时往没有指定具体数据的列中自动插入的数据。默认值对象与CREATE TABLE或ALTER TABLE语句操作表时用默认约束指定的默认值功能相似,两者的区别类似于规则与检查约束在使用上的区别。 默认值对象可以用于多个列或用户定义数据类型。表的一列或一个用户定义数据类型只能与一个默认值相绑定。

13、默认值的创建、查看、绑定、松绑和删除等操作可在企业管理器中进行,也可利用Transact-SQL语句进行。 在企业管理器中选择数据库对象的“默认值”对象,单击右键,从快捷菜单中选择“新建默认值”选项,打开“默认属性”对话框,如图8-7所示。输入默认值名称和值表达式之后,单击“确定”按钮,即完成默认值的创建。1用企业管理器创建默认值用企业管理器创建默认值8.3.1 8.3.1 创建默认值创建默认值2用CREATE DEFAULT语句创建默认值 CREATE DEFAULT语句用于在当前数据库中创建默认值对象,其语法格式如下:CREATE DEFAULT default_nameAS consta

14、nt_expression8.3.1 8.3.1 创建默认值创建默认值CREATE DEFAULT birthday_defaAS 1978-1-1例5-12 创建当前日期默认值today_defa。CREATE DEFAULT today_defaAS getdate()例5-11 创建生日默认值birthday_defa。1用企业管理器查看默认值 在企业管理器中选择数据库对象的“默认值”对象,即可从右边的任务板中看到默认值的大部分信息,如图8-8所示。5.3.2 查看默认值8.3.2 8.3.2 查看默认值查看默认值 选择要查看的默认值,单击右键,从快捷菜单中选择“属性”选项,就会出现图8

15、-9所示的“默认属性”对话框,可以从中编辑默认值的值表达式。2用系统存储过程sp_helptext 查看默认值 使用sp_helptext系统存储过程可以查看默认值的细节。8.3.2 8.3.2 查看默认值查看默认值例例5-13 查看默认值查看默认值today_defa。 EXEC sp_helptext today_defa运行结果如图运行结果如图8-10所示。所示。5.3.3 默认值的绑定与松绑在企业管理器中,选择要进行绑定设置的默认值,单击右键,从快捷菜单中选择“属性”选项,打开“默认属性”对话框,参见图8-9。图8-9中的“绑定UDT(U)” 按钮用于将默认值绑定到用户定义数据类型,“

16、绑定列(B)”按钮用于将默认值绑定到表的列。单击“绑定UDT(U)”按钮,则出现如图8-11所示的“将绑定默认值到用户定义的数据类型”对话框8.3 8.3 使用默认值实施数据完整性使用默认值实施数据完整性1用企业管理器管理默认值的绑定和松绑用企业管理器管理默认值的绑定和松绑8.3.3 8.3.3 默认值的绑定与松绑默认值的绑定与松绑 单击“绑定列(B)”按钮,则出现如图8-12所示的“将绑定默认值到表的列”对话框。管理默认值与用户定义数据类型以及表的列之间的绑定和松绑与规则相同。8.3.3 8.3.3 默认值的绑定与松绑默认值的绑定与松绑2用sp_bindefault 绑定默认值 系统存储过程

17、sp_bindefault 可以绑定一个默认值到表的一个列或一个用户定义数据类型上。其语法格式如下:sp_bindefault default, object_name ,futureonly 例5-14 绑定默认值today_defa 到employee表的hire_date列上。EXEC sp_bindefault today_defa, employee.hire_date8.3.3 8.3.3 默认值的绑定与松绑默认值的绑定与松绑3用sp_unbindefault 解除默认值的绑定 系统存储过程sp_unbindefault 可以解除默认值与表的列或用户定义数据类型的绑定,其语法格式如下:sp_unbindefault object_name , futureonly 例5-15 解除默认值today_defa与表employee 的hire_date 列的绑定。EXEC sp_unbindefault employee.hire_da

温馨提示

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

评论

0/150

提交评论