《网络数据库开发技术》全套ppt电子课件教案-第8章 sql server的完整性控制

上传人:aa****6 文档编号:49630670 上传时间:2018-07-31 格式:PPT 页数:46 大小:454KB
返回 下载 相关 举报
《网络数据库开发技术》全套ppt电子课件教案-第8章   sql server的完整性控制_第1页
第1页 / 共46页
《网络数据库开发技术》全套ppt电子课件教案-第8章   sql server的完整性控制_第2页
第2页 / 共46页
《网络数据库开发技术》全套ppt电子课件教案-第8章   sql server的完整性控制_第3页
第3页 / 共46页
《网络数据库开发技术》全套ppt电子课件教案-第8章   sql server的完整性控制_第4页
第4页 / 共46页
《网络数据库开发技术》全套ppt电子课件教案-第8章   sql server的完整性控制_第5页
第5页 / 共46页
点击查看更多>>
资源描述

《《网络数据库开发技术》全套ppt电子课件教案-第8章 sql server的完整性控制》由会员分享,可在线阅读,更多相关《《网络数据库开发技术》全套ppt电子课件教案-第8章 sql server的完整性控制(46页珍藏版)》请在金锄头文库上搜索。

1、第8章 SQL SERVER的完整 性控制8.1 SQL SERVER完整性概述 8.2 约束8.3 规则8.4 默认值8.5 标识列 n主要内容:n本章从约束,规则,默认值,标识列几 方面介绍数据库完整性控制的实现方法 。8.1 SQL SERVER完整性概述n数据库中的数据是从外界输入的,而数 据的输入由于种种原因,会发生输入无 效或错误的信息。保证数据符合规定, 成了数据库系统关注的问题,数据完整 性因此而提出。 8.1.1 完整性分类n1实体完整性n2域完整性n3参照完整性实体完整性n实体完整性将行定义为特定表的惟一实 体。实体完整性强制表的标识符列或主 键的完整性(通过索引、UNIQ

2、UE 约束 、PRIMARY KEY 约束或 IDENTITY 属性)。 域完整性n域完整性是指给定列的输入有效性。强 制域有效性的方法有:限制类型(通过 数据类型)、格式(通过 CHECK 约束 和规则)或可能值的范围(通过 FOREIGN KEY 约束、CHECK 约束、 DEFAULT 定义、NOT NULL 定义和规 则)。参照完整性n在输入或删除记录时,参照完整性保持 表之间已定义的关系。在SQL Server 2000 中,参照完整性基于外键与主键之 间或外键与惟一键之间的关系(通过 FOREIGN KEY 和 CHECK 约束)。参 照完整性确保键值在所有表中一致。这 样的一致性

3、要求不能引用不存在的值, 如果键值更改了,那么在整个数据库中 ,对该键值的所有引用要进行一致的更 改。 8.1.2 数据库完整性的实现机制nSQL SERVER中实现数据库完整性的机 制主要有:约束、规则、默认值、标识列 、数据类型、索引、触发器和存储过程 。8.2 约束n1 主键(PRIMARY KEY)约束n2 外键(FOREIGN KEY)约束n3 CHECK约束n4 惟一( UNIQUE) 约束1 主键(PRIMARY KEY)约束nPRIMARY KEY 约束标识列或列集,这些列或列 集的值惟一地标识表中的行。 n在一个表中,不能有两行包含相同的主键值。不 能在主键内的任何列中输入

4、NULL 值。在数据库 中 NULL 是特殊值,代表不同于空白和 0 值的未 知值。建议使用一个小的整数列作为主键。每个 表都应有一个主键。n一个表中可以有一个以上的列组合,这些组合能 惟一标识表中的行,每个组合就是一个候选键。 数据库管理员从候选键中选择一个作为主键。n【例1】在part_sample表中,part_nmbr 和part_name都可以是候选键,但是只将 part_nmbr 选作主键。ncreate table part_samplen (part_nmbr int primary key,n part_name char(30),n part_weight decimal(

5、6,2),n part_color char(15) )2 外键(FOREIGN KEY)约束nFOREIGN KEY 约束标识表之间的关系。 n一个表的外键指向另一个表的候选键。当外键 值没有候选键时,外键可防止操作保留带外键 值的行。n【例2】order_part表建立一个外键引用前面 定义的part_sample表。通常情况下, order_part 在order表上也有一个外键,下面 只不过是一个简单示例。ncreate table order_partn (order_nmbr int,n part_nmbr intn foreign key references part_samp

6、le(part_nmbr)n on delete no action,n qty_ordered int)ngon如果一个外键值没有候选键,则不能插 入带该值(NULL 除外)的行。如果尝 试删除现有外键指向的行,ON DELETE 子句将控制所采取的操作。ON DELETE 子句有两个选项:n NO ACTION 指定删除因错误而失败。n CASCADE 指定还将删除包含指向已删 除行的外键的所有行。 n如果尝试更新现有外键指向的候选键值 ,ON UPDATE 子句将定义所采取的操 作。它也支持NO ACTION和CASCADE 选项。3 CHECK约束nCHECK约束对可以放入列中的值进行

7、限 制,以强制执行域的完整性。nCHECK约束指定应用于列中输入的所有 值的布尔(取值为TRUE或FALSE)搜 索条件,拒绝所有不为TRUE的值。可以 为每列指定多个CHECK约束。n【例3】显示名为chk_id约束的创建,该约束确 保只对此关键字输入指定范围内的数字,以进一 步强制执行主键的域。ncreate table cust_samplen (n cust_idint primary key,n cust_namechar(50),n cust_address char(50),n cust_credit_limitmoney,n constraint chk_id check (c

8、ust_id between 0 and 10000 )n )4 惟一( UNIQUE) 约束nUNIQUE 约束在列集内强制执行值的惟 一性。 n对于 UNIQUE 约束中的列,表中不允许 有两行包含相同的非空值。主键也强制 执行惟一性,但主键不允许空值。 UNIQUE 约束优先于惟一索引。 8.3.1 创建规则n使用T-SQL 语句 CREATE RULE 可以创建规则。n语法格式为:nCREATE RULE 规则名 AS 条件表达式 参数n条件表达式是定义规则的条件,可以是 WHERE 子 句中任何有效的表达式,并且可以包含诸如算术运 算符、关系运算符和谓词(如 IN、LIKE、 BET

9、WEEN)之类的元素。规则不能引用列或其他 数据库对象。可以包含不引用数据库对象的内置函 数。n条件表达式包含一个变量,每个局部变量的前面都 有一个 符号。该表达式引用通过 UPDATE 或 INSERT 语句输入的值。在创建规则时,可以使用 任何名称或符号表示值,但第一个字符必须是 符 号。n【例4】创建一个规则,用以限制插入该规则所绑定 的列中的整数范围。 ncreate rule range_rulenas range = $1000 and range $20000n【例5】创建一个规则,用以将输入到该规则所绑定 的列中的实际值限制为只能是该规则中列出的值。ncreate rule l

10、ist_rulenas list in (1389, 0736, 0877)n【例6】创建一个遵循这种模式的规则:任意两个字 符的后面跟一个连字符和任意多个。ncreate rule pattern_rule nas value like _ _-%0-98.3.2 规则的绑定与松绑n规则创建后,需要将其捆绑到列上或用户自定义的 数据类型上,当向捆绑了规则的列或使用捆绑了规 则的用户自定义数据类型的所有列插入或更新数据 时,新的数据必须符合规则。n使用系统存储过程 sp_bindrule 可以将规则捆绑到 列或用户自定义的数据类型上。n语法格式为:nsp_bindrule rulename =

11、 规则名 ,n objname = 对象名n , futureonly = futureonly_flag n对象名是要绑定规则的表和列或者用户定义数据类 型的名称。nfutureonly_flag仅当将规则绑定到用户定 义的数据类型时才使用。futureonly_flag 的数据类型为 varchar(15),默认值为 NULL。将此参数在设置为 futureonly 时 ,它会防止用户定义数据类型的现有列 继承新规则。如果 futureonly_flag 为 NULL,那么新规则将绑定到用户定义数 据类型的每一列,条件是此数据类型当 前无规则或者使用用户定义数据类型的 现有规则。 n【例7

12、】将规则绑定到列。n假设已经用 CREATE RULE 语句在当前数据库 中创建名为 today 的规则,此示例将规则绑定到 employees 表的 hire date 列。将行添加到 employees 时,按照 today 规则检查 hire date 列 的数据。nuse masterngon exec sp_bindrule today, employees.hire datengon【例8】将规则绑定到用户定义的数据类型。n假设存在名为 rule_ssn 的规则和名为 ssn 的用户 定义数据类型,此示例将 rule_ssn 绑定到 ssn。 在 CREATE TABLE 语句中,

13、类型 ssn 的列继承 rule_ssn 规则。类型 ssn 的现有列也继承 rule_ssn 规则,除非为 futureonly_flag 指定了 futureonly 或者在 ssn 上直接绑定了规则。绑定 到列的规则始终优先于绑定到数据类型的规则。nuse masterngon exec sp_bindrule rule_ssn, ssnngon【例9】使用 futureonly_flag。n此示例将 rule_ssn 规则绑定到用户定义数 据类型 ssn。因为已指定 futureonly,所以 不影响类型 ssn 的现有列。nuse masterngon exec sp_bindrul

14、e rule_ssn, ssn, futureonlyngon【例10】使用分隔标识符。n此示例显示了在 object_name 中分隔标识符的 使用。nuse masterngoncreate table t.2 (c1 int) nexec sp_binderule rule1, t.2.c1 ngo解除规则绑定n使用sp_unbindrule在当前数据库中为列或用户定义 数据类型解除规则绑定。n语法格式为:nsp_unbindrule objname = 对象名n , futureonly = futureonly_flagn对象名是要解除规则绑定的表和列或者用户定义数 据类型的名称。n

15、 futureonly = futureonly_flag仅用于解除用户 定义数据类型规则的绑定。n【例11】为表 employees 的 startdate 列解除规 则绑定。nexec sp_unbindrule employees.startdaten【例12】为用户定义数据类型 ssn 解除规则绑 定。这将为该数据类型的现有列和将来的列解 除规则绑定。nexec sp_unbindrule ssnn【例13】为用户定义数据类型ssn解除规则绑 定,现有的 ssn 列不受影响。nexec sp_unbindrule ssn, futureonly8.4 默认值n当绑定到列或用户定义数据类型时,如果插入 时没有明确提供值,默认值便指定一个值,并 将其插入到对象所绑定的列中(或者在用户定 义数据类型的情况下,插入到所有列中)。默 认值是一个向后兼容的功能,它执行一些与使 用 ALTER 或 CREATE TABLE 语句的 DEFAULT 关键字创建的默认值定义相同的功 能。默认值定义是限制列数据的首选并且标准 的方法,因为定义和表存储在一起,当除去表 时,将自动除去默认值定义。然而,当在多个 列中多次使用默认值时,默认值也有其优点。 8

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > PPT模板库 > 教育/培训/课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号