131-数据完整性管理
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
数据完整性管理
【周序】:第十三周1-2节课
【课题】:数据完整性管理
【教学目标】:
知识目标:让学生掌握使用规则和默认对数据进行完整性管理;
思想目标:让学生了解规则和默认;
能力目标:让学生掌握规则管理、默认管理;
【教学重点】:
规则管理、默认管理;
【教学难点】:
规则管理、默认管理;
【课时】:
2课时
【教学环境】:
多媒体教室
【教学方法】:
讲解法、演示法
【教学内容】:
导入语:上周我们已经学习完了sql语言,今天我们学习规则和默认的管理。
(一)数据完整性概述
数据完整性(Data Integrity)是指数据的精确性和可靠性。分为四类:
实体完整性(Entity Integrity)
域完整性(Domain Integrity)
参照完整性(Referential Integrity)
用户定义的完整性(User-defined Integrity)。
SQL Server 提供了一些工具来帮助用户实现数据完整性,其中最主要的是规则、默认、约束和触发器。(今天主要学习规则和默认)
(二)规则
定义:数据库中对存储在表的列或用户自定义数据类型中的值的规定和限制。
a.创建规则
1.用CREATE RULE 命令
其语法如下:
CREATE RULE rule_name AS condition_expression
其中:
r ule_name 是规则的名称
condition_expression 子句是规则的定义,它可以是能用于WHERE 条件子句中的任何表达式,可包含算术运算符、关系运算符和谓词(如IN、LIKE、BETWEEN 等)。
condition_expression 子句中的表达式必须以字符@ 开头
创建学生年龄规则:create rule age_rule
as @age >= 18 and @age <= 50
2.用Enterprise Manager 创建规则:省略
b.查看规则
1.用Enterprise Manager
2.用存储过程Sp_helptext其语法如下:sp_helptext [@objname =] 'name'
其中,[@objname =] …name‟子句指明对象的名称
如:查看名称为“age_rule”的规则内容。
EXEC sp_helptext 'age_rule'
c.规则的绑定与松绑
需要将规则与数据库表或用户自定义对象联系起来,才能达到创建规则的目的。
联系的方法称为“绑定”。
所谓绑定就是指定规则作用于哪个表的哪一列或哪个用户自定义数据类型。
表的一列或一个用户自定义数据类型只能与一个规则相绑定,而一个规则可以绑定多对象。
解除规则与对象的绑定称为“松绑”。
1.用存储过程Sp_bindrule 绑定规则
其语法如下:
sp_bindrule [@rulename =] 'rule',
[@objname =] 'object_name'
[, 'futureonly']
如:绑定规则age_rule 到s表的字段age。
EXEC sp_bindrule 'age_rule', 's.age'
注:规则对已经输入表中的数据不起作用。
2.用存储过程Sp_unbindrule 解除规则的绑定
存储过程Sp_unbindrule 可解除规则与列或用户自定义数据类型的绑定,其语法如下:
sp_unbindrule [@objname =] 'object_name'[,'futureonly']
如:要解除已绑定到s表的字段age的规则age_rule。
EXEC sp_unbindrule 's.age'
3.用Enterprise Manager 管理规则的绑定
d.删除规则
用Enterprise Manager
2.使用DROP RULE命令删除规则
其语法如下:
DROP RULE {rule_name} [,...n]
Eg:删除age_rule规则,可执行以下命令:
DROP RULE age_rule
(三)默认
默认(Default)是往用户输入记录时没有指定具体数据的列中自动插入的数据。
默认对象与DEFAULT 选项指定的默认功能相似,但默认对象可以用于多个列或用户自定义数据类型,它的管理与应用同规则有许多相似之处。
表的一列或一个用户自定义数据类型也只能与一个默认相绑定。
a.创建默认
1.用CREATE DEFAULT 命令创建默认
其语法如下:CREATE DEFAULT default_name AS constant_expression
如:创建出生日期默认birthday_defa。
CREATE DEFAULT birthday_defa as '1978-1-1'
2.用Enterprise Manager 创建默认
b.用存储过程Sp_unbindefault 解除默认的绑定
存储过程SP_UNBINDEFAULT 可以解除默认与表的列或用户自定义数据类型的绑定,其语法如下:
SP_UNBINDEFAULT [@objname =] 'object_name' [,'futureonly']
其中:
…futureonly‟选项同绑定时一样,仅用于用户自定义数据类型它指定现有的用此用户自定义数据类型定义的列仍然保持与此默认的绑定。
如果不指定此项,所有由此用户自定义数据类型定义的列也将随之解除与此默认的绑定。
如:解除默认birthday_defa与表s的birthday列的绑定。
EXEC SP_UNBINDEFAULT 's.[birthday]'
注:
如果列同时绑定了一个规则和一个默认那么默认应该符合规则的规定。
不能绑定默认到一个用CREATE TABLE 或ALTER TABLE 命令创建或修改表时用DEFAULT 选项指定了的默认的列上。
c.删除默认
1.用Enterprise Manager 删除默认
在Enterprise Manager 的左侧窗格中,展开相应的数据库(如:Study)目录
在数据库的对象“默认”上面单击,这时在右侧窗格的任务板中即可看到已建立的各个默认的信息
在某个默认的名称上面单击右键,从快捷菜单中选择“删除”菜单项,即会出会出现“除去对象”对话框,在该对话框中单击“全部移去”按钮。
2.使用DROP DEFAULT命令删除认
使用DROP DEFAULT 命令删除当前数据库中的一个或多个默认。其语法如下: