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

下载本文档

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

文档简介

1、第第8章章 数据完整性数据完整性 本章内容本章内容 8.1 数据完整性概述数据完整性概述 8.2 使用规则实施数据完整性使用规则实施数据完整性 8.3 使用默认值实施数据完整性使用默认值实施数据完整性 8.4 使用约束实施数据完整性使用约束实施数据完整性 8.1 数据完整性概述数据完整性概述 n数据完整性防止数据库中存在不符合语义规定的数据和防数据完整性防止数据库中存在不符合语义规定的数据和防 止因错误信息的输入输出造成无效操作或错误信息而提出止因错误信息的输入输出造成无效操作或错误信息而提出 的。的。 数据完整性有数据完整性有4种类型:种类型: 实体完整性实体完整性(Entity Integ

2、rity)、 域完整性域完整性(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、3 规则的绑定与松绑规则的绑定与松绑 8.2.4 删除规则删除规则 8.2.1 创建规则创建规则 n规则规则(Rule)就是数据库中对存储在表的列或用户定义数据就是数据库中对存储在表的列或用户定义数据 类型中的值的规定和限制。类型中的值的规定和限制。 n规则是单独存储的独立的数据库对象。规则是单独存储的独立的数据库对象。 n规则和约束可以同时使用,表的列可以有一个规则及多个规则和约束可以同时使用,表的列可以有一个规则及多个 约束。规则与检查约束在功能上相似,但在使用上有所区约束。规则与检查约束在功能上相似,但在使用上有所区 别。别。 检查约束是在检查约束是在CREATE TABLE或或ALTE

4、R TABLE语句中定义的,语句中定义的, 嵌入了被定义的表结构,即删除表的时候检查约束也就随之被删嵌入了被定义的表结构,即删除表的时候检查约束也就随之被删 除。除。 而规则需要用而规则需要用CREATE RULE语句定义后才能使用,是独立于表语句定义后才能使用,是独立于表 之外的数据库对象,删除表并不能删除规则,需要用之外的数据库对象,删除表并不能删除规则,需要用DROP RULE语句才能删除。语句才能删除。 相比之下,使用在相比之下,使用在CREATE TABLE或或ALTER TABLE语句中定义语句中定义 的检查约束是更标准的限制列值的方法,但检查约束不能直接作的检查约束是更标准的限制

5、列值的方法,但检查约束不能直接作 用于用户定义数据类型。用于用户定义数据类型。 8.2 8.2 使用规则实施数据完整性使用规则实施数据完整性 1用企业管理器创建规则用企业管理器创建规则 8.2.1 8.2.1 创建规则创建规则 n在企业管理器中选择数在企业管理器中选择数 据库对象据库对象“规则规则”,单,单 击右键从快捷菜单中选击右键从快捷菜单中选 择择“新建规则新建规则”选项,选项, 即会弹出如图所示的即会弹出如图所示的 “规则属性规则属性”对话框。对话框。 n输入规则名称和表达式输入规则名称和表达式 之后,单击之后,单击“确定确定”按按 钮,即完成规则的创建。钮,即完成规则的创建。 2用用

6、CREATE RULE语句创建规则语句创建规则 8.2.1 8.2.1 创建规则创建规则 nCREATE RULE语句用于在当前数据库中语句用于在当前数据库中 创建规则,其语法格式如下:创建规则,其语法格式如下: CREATE RULE rule_name AS condition_expression 8.2.1 8.2.1 创建规则创建规则 CREATE RULE hire_date_rule AS hire_date=1980-01-01 and hire_date18) 8.4.4 8.4.4 检查约束检查约束 例例8-25 创建一个订货表创建一个订货表orders,保证各订单,保证各

7、订单 的订货量必须不小于的订货量必须不小于10。 CREATE TABLE orders ( order_id char(8), p_id char(8), p_name char(10) , quantity smallint CONSTRAINT chk_quantity CHECK (quantity=10), CONSTRAINT pk_orders_id PRIMARY KEY (order_id) ) 8.4.4 8.4.4 检查约束检查约束 CREATE TABLE transporters ( transporter_id char(4) NOT NULL, transport

8、_name varchar(50), linkman_name char(8), address varchar(50), telephone char(12) NOT NULL CHECK(telephone LIKE 01-90-90-9-1-90-90-90-90-90-90-9 OR telephone LIKE 01-90-9-1-90-90-90-90-90-90-90-9) ) 例例8-26 创建创建transporters表并定义检查约束表并定义检查约束 8.4 8.4 使用约束实施数据完整性使用约束实施数据完整性 8.4.5 默认约束默认约束 n默认默认(Default)约束

9、通过定义列的默认值或使约束通过定义列的默认值或使 用数据库的默认值对象绑定表的列,以确用数据库的默认值对象绑定表的列,以确 保在没有为某列指定数据时,来指定列的保在没有为某列指定数据时,来指定列的 值。值。 n默认值可以是常量,也可以是表达式,还默认值可以是常量,也可以是表达式,还 可以为可以为NULL值。值。 8.4.5 8.4.5 默认约束默认约束 定义默认约束的语法格式定义默认约束的语法格式 CONSTRAINT constraint_name DEFAULT constant_expression FOR column_name 8.4.5 8.4.5 默认约束默认约束 例例8-27

10、在在Sales数据库中,为员工表数据库中,为员工表employee 的的sex列添加默认约束,默认值是列添加默认约束,默认值是“男男”。 ALTER TABLE employee ADD CONSTRAINT sex_default DEFAULT 男男 FOR sex n例例8-28 更改表更改表employee为为hire_date列定义列定义 默认约束。默认约束。 ALTER TABLE employee ADD CONSTRAINT hire_date_df DEFAULT (getdate() FOR hire_date 8.4.5 8.4.5 默认约束默认约束 例例8-29 添加具

11、有默认值的可为空的列添加具有默认值的可为空的列 ALTER TABLE employee ADD hire_date datetime DEFAULT (getdate() WITH VALUES 8.4.5 8.4.5 默认约束默认约束 例例8-30 使用默认约束。使用默认约束。 -创建表创建表purchase_order CREATE TABLE purchase_order ( order_id2 char(6)NOT NULL, goods_id char(6) NOT NULL, employee_id char(4) NOT NULL, supplier_id char(5) NO

12、T NULL, transporter_id char(4), order_num float NOT NULL, discount float DEFAULT (0), order_date datetime NOT NULL DEFAULT (GetDate(), send_date datetime, arrival_date datetime) -使用使用DEFAULT VALUES选项为选项为purchase_order表装载数据。表装载数据。 INSERT INTO purchase_order DEFAULT VALUES-无法执行,因为有很多要求非空又没有默认值的字段无法执行,

13、因为有很多要求非空又没有默认值的字段 8.4.5 8.4.5 默认约束默认约束 例例8-31 为表为表purchase_orders定义多个约束定义多个约束 CREATE TABLE purchase_orders ( order_id2 char(6) NOT NULL, goods_id char(6) NOT NULL, employee_id char(4) NOT NULL, supplier_id char(5) NOT NULL, transporter_id char(4), order_num float NOT NULL, discount float CHECK (dis

14、count=0 AND discount order_date and arrival_date send_date) ) 本章小结本章小结 (1)数据完整性有数据完整性有4种类型:实体完整性、域完整性、参照完整性和种类型:实体完整性、域完整性、参照完整性和 用户定义的完整性。在用户定义的完整性。在SQL Server 2000中可以通过各种约束、默认、中可以通过各种约束、默认、 规则和触发器等数据库对象来保证数据的完整性。规则和触发器等数据库对象来保证数据的完整性。 (2)规则实施数据的完整性:规则就是数据库中对存储在表的列或规则实施数据的完整性:规则就是数据库中对存储在表的列或 用户定义数

15、据类型中的值的规定和限制。可以通过企业管理器和用户定义数据类型中的值的规定和限制。可以通过企业管理器和 Transact-SQL语句来创建、删除、查看规则以及规则的绑定与松绑。语句来创建、删除、查看规则以及规则的绑定与松绑。 (3)默认值实施数据完整性:默认值是用户输入记录时没有指定具默认值实施数据完整性:默认值是用户输入记录时没有指定具 体数据的列中自动插入的数据。默认值对象可以用于多个列或用户定体数据的列中自动插入的数据。默认值对象可以用于多个列或用户定 义数据类型,它的管理与应用同规则有许多相似之处。表的一列或一义数据类型,它的管理与应用同规则有许多相似之处。表的一列或一 个用户定义数据类型也只能与一个默认值相绑定。在个用户定义数据类型也只能与一个默认值相绑定。在SQL Server中中 使用企业管理器和使用企业管理器和Transact-SQL语句实现默认值的创建、查看、删语句实现默认值的创建、查看、删 除以及默认

温馨提示

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

评论

0/150

提交评论