文档详情

SQL server 数据完整性.doc

cn****1
实名认证
店铺
DOC
90KB
约10页
文档ID:540615480
SQL server 数据完整性.doc_第1页
1/10

第8章 数据完整性本章内容8.1 数据完整性概述8.2 使用规则实施数据完整性8.3 使用默认值实施数据完整性8.4 使用约束实施数据完整性8.1 数据完整性概述n 数据完整性防止数据库中存在不符合语义规定的数据和防止因错误信息的输入输出造成无效操作或错误信息而提出的¨ 数据完整性有4种类型:¨ 实体完整性(Entity Integrity)、¨ 域完整性(Domain Integrity)、¨ 参照完整性(Referential Integrity)、¨ 用户定义的完整性(User-defined Integrity)n 在SQL Server中可以通过各种规则(Rule)、默认(Default)、约束(Constraint)和触发器(Trigger)等数据库对象来保证数据的完整性8.2 使用规则实施数据完整性8.2.1 创建规则8.2.2 查看和修改规则8.2.3 规则的绑定与松绑8.2.4 删除规则8.2.1 创建规则n 规则(Rule)就是数据库中对存储在表的列或用户定义数据类型中的值的规定和限制n 规则是单独存储的独立的数据库对象n 规则和约束可以同时使用,表的列可以有一个规则及多个约束。

规则与检查约束在功能上相似,但在使用上有所区别¨ 检查约束是在CREATE TABLE或ALTER TABLE语句中定义的,嵌入了被定义的表结构,即删除表的时候检查约束也就随之被删除¨ 而规则需要用CREATE RULE语句定义后才能使用,是独立于表之外的数据库对象,删除表并不能删除规则,需要用DROP RULE语句才能删除¨ 相比之下,使用在CREATE TABLE或ALTER TABLE语句中定义的检查约束是更标准的限制列值的方法,但检查约束不能直接作用于用户定义数据类型 1.用企业管理器创建规则n 在企业管理器中选择数据库对象“规则”,单击右键从快捷菜单中选择“新建规则”选项,即会弹出如图所示的“规则属性”对话框n 输入规则名称和表达式之后,单击“确定”按钮,即完成规则的创建2.用CREATE RULE语句创建规则n CREATE RULE语句用于在当前数据库中创建规则,其语法格式如下: CREATE RULE rule_name AS condition_expression例8-1 创建雇佣日期规则 hire_date_ruleCREATE RULE hire_date_ruleAS @hire_date>='1980-01-01' and @hire_date<=getdate()例8-2 创建性别规则sex_rule。

CREATE RULE sex_ruleAS @sex in ('男','女')例8-3 创建评分规则grade_ruleCREATE RULE grade_ruleAS @value between 1 and 100例8-4 创建字符规则my_character_ruleCreate rule my_character_ruleAs @value like '[a-z]%[0-9]' 8.2.2 查看和修改规则1.用企业管理器查看和修改规则n 在企业管理器的数据库对象中选择“规则”对象,即可从右边的任务板中看到规则的大部分信息,包括规则的名称、所有者、创建时间等2.用系统存储过程sp_helptext 查看规则n 使用sp_helptext 系统存储过程可以查看规则的文本信息例8-5 查看规则hire_date_rule的文本信息EXECUTE sp_helptext hire_date_rule运行结果如图所示 8.2.3 规则的绑定与松绑n 需要将规则与数据库表或用户定义对象联系起来,才能发生作用联系的方法称为绑定,所谓绑定就是指定规则作用于哪个表的哪一列或哪个用户定义数据类型。

n 表的一列或一个用户定义数据类型只能与一个规则相绑定,而一个规则可以绑定多对象,这正是规则的魅力所在n 解除规则与对象的绑定称为松绑1.用企业管理器管理规则的绑定和松绑n 在企业管理器中,展开数据库(Sales)文件夹,鼠标单击“规则”选项,在右窗格中选择要进行绑定的规则(hire_date),单击鼠标右键,从快捷菜单中选择“属性” 菜单项,打开“规则属性”对话框,如图8-4所示n 图中的“绑定UDT(U)”按钮用于绑定规则到用户定义的数据类型,“绑定列(B)”按钮用于绑定规则到表的列n 在图8-4中单击“绑定UDT(U)”按钮,则出现“将绑定规则到用户定义的数据类型”对话框,如图8-5所示;n 单击“绑定列(B)”按钮,则出现如图8-6所示的“将绑定规则到列”对话框n 在“将规则绑定列”对话框的左边“未绑定的列”列表框中选择一列“添加”到右边“绑定列”列表框中,就实现规则绑定了 n 同样,去掉“将规则绑定到用户定义的数据类型”对话框的列表框的“绑定”列下的标识或删除“将规则绑定列”对话框的右边“绑定列”列表框的列,就实现了规则的松绑操作2.用系统存储过程sp_bindrule绑定规则n 系统存储过程sp_bindrule 可以绑定一个规则到表的一个列或一个用户定义数据类型上。

其语法格式如下:sp_bindrule [@rulename =] 'rule',[@objname =] 'object_name'[ , [ @futureonly=] 'futureonly' ]例8-6 将例8-1创建的规则hire_date_rule绑定到employee表的hire_date列上EXEC sp_bindrule hire_date_rule, 'employee.hire_date' 运行结果为:已将规则绑定到表的列上例8-7 定义用户定义数据类型pat_char,将例8-4创建的规则my_character_rule绑定到pat_var上EXEC sp_addtype pat_char,'varchar(10)','NOT NULL'GOEXEC sp_bindrule my_character_rule, pat_char, 'futureonly‘ 运行结果如下:(所影响的行数为1行)类型已添加已将规则绑定到数据类型例8-8 绑定例8-2创建的规则sex_rule 到employee 表的字段sexEXEC sp_bindrule sex_rule, 'employee.sex'n 运行结果如下:已将规则绑定到表的列上。

3.用系统存储过程sp_unbindrule 解除规则的绑定n 系统存储过程sp_unbindrule可解除规则与列或用户定义数据类型的绑定,其语法格式如下:sp_unbindrule [@objname =] 'object_name'[ , [ @futureonly = ] 'futureonly' ]例8-9 解除例8-6和例8-7绑定在employee表的hire_date列和用户定义数据类型pat_char上的规则EXEC sp_unbindrule 'employee.hire_date'n 运行结果如下:(所影响的行数为 1 行)已从表的列上解除了规则的绑定EXEC sp_unbindrule pat_char,'futureonly'n 运行结果如下:(所影响的行数为 1 行)已从数据类型上解除了规则的绑定8.2.4 删除规则n 使用DROP RULE语句删除当前数据库中的一个或多个规则其语法格式如下:DROP RULE {rule_name} [,...n]n 注意:在删除一个规则前,必须先将与其绑定的对象解除绑定例8-10 删除例8-1和8-2中创建的规则DROP RULE sex_rule,hire_date_rule 8.3 使用默认值实施数据完整性8.3.1 创建默认值8.3.2 查看默认值8.3.3 默认值的绑定与松绑8.3.4 删除默认值8.3.1 创建默认值n 默认值(Default)是用户输入记录时往没有指定具体数据的列中自动插入的数据。

默认值对象与CREATE TABLE或ALTER TABLE语句操作表时用默认约束指定的默认值功能相似,两者的区别类似于规则与检查约束在使用上的区别n 默认值对象可以用于多个列或用户定义数据类型表的一列或一个用户定义数据类型只能与一个默认值相绑定n 默认值的创建、查看、绑定、松绑和删除等操作可在企业管理器中进行,也可利用Transact-SQL语句进行8.3.1 创建默认值1.用企业管理器创建默认值 n 在企业管理器中选择数据库对象的“默认值”对象,单击右键,从快捷菜单中选择“新建默认值”选项,打开“默认属性”对话框,如图8-7所示输入默认值名称和值表达式之后,单击“确定”按钮,即完成默认值的创建2.用CREATE DEFAULT语句创建默认值n CREATE DEFAULT语句用于在当前数据库中创建默认值对象,其语法格式如下:CREATE DEFAULT default_name AS constant_expression例8-11 创建生日默认值birthday_defaCREATE DEFAULT birthday_defaAS '1978-1-1'例8-12 创建当前日期默认值today_defa。

CREATE DEFAULT today_defaAS getdate()8.3.2 查看默认值1.用企业管理器查看默认值n 在企业管理器中选择数据库对象的“默认值”对象,即可从右边的任务板中看到默认值的大部分信息,如图8-8所示n 选择要查看的默认值,单击右键,从快捷菜单中选择“属性”选项,就会出现图8-9所示的“默认属性”对话框,可以从中编辑默认值的值表达式2.用系统存储过程sp_helptext 查看默认值n 使用sp_helptext系统存储过程可以查看默认值的细节例8-13 查看默认值today_defaEXEC sp_helptext today_defan 运行结果如图8-10所示8.3.3 默认值的绑定与松绑1.用企业管理器管理默认值的绑定和松绑n 在企业管理器中,选择要进行绑定设置的默认值,单击右键,从快捷菜单中选择“属性”选项,打开“默认属性”对话框,参见图8-9n 图8-9中的“绑定UDT(U)” 按钮用于将默认值绑定到用户定义数据类型,“绑定列(B)”按钮用于将默认值绑定到表的列单击“绑定UDT(U)”按钮,则出现如图8-11所示的“将绑定默认值到用户定义的数据类型”对话框n 单击“绑定列(B)”按钮,则出现如图8-12所示的“将绑定默认值到表的列”对话框。

管理默认值与用户定义数据类型以及表的列之间的绑定和松绑与规则相同2.用sp_bindefault 绑定默认值n 系统存储过程sp_bindefault 可以绑定一个默认值到表的一个列或一个用户定义数据类型上其语法格式如下:sp_bindefault [@defname =] 'default',[@objname =] 'object_name'[ , [ @futureonly=] 'futureonly' ]例8-14 绑定默认值today_defa 到employee表的。

下载提示
相似文档
正为您匹配相似的精品文档