《第8章 数据完整性.ppt》由会员分享,可在线阅读,更多相关《第8章 数据完整性.ppt(61页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、n8.1 数据完整性概述数据完整性概述n8.2 使用规则实施数据完整性使用规则实施数据完整性n8.3 使用默认值实施数据完整性使用默认值实施数据完整性n8.4 使用约束实施数据完整性使用约束实施数据完整性第第8 8章章 数据完整性数据完整性8.1 数据完整性概述数据完整性概述n数据完整性防止数据库中存在不符合语义规定的数据和防数据完整性防止数据库中存在不符合语义规定的数据和防止因错误信息的输入输出造成无效操作或错误信息而提出止因错误信息的输入输出造成无效操作或错误信息而提出的。的。数据完整性有数据完整性有4种类型:种类型:实体完整性实体完整性(Entity Integrity)域完整性域完整性
2、(Domain Integrity)参照完整性参照完整性(Referential Integrity)用户定义的完整性用户定义的完整性(User-defined Integrity)n在在SQL Server中可以通过各种规则中可以通过各种规则(Rule)、默认、默认(Default)、约束、约束(Constraint)和触发器和触发器(Trigger)等数据等数据库对象来保证数据的完整性。库对象来保证数据的完整性。n规则规则(Rule)就是数据库中对存储在表的列或用户就是数据库中对存储在表的列或用户定义数据类型中的值的规定和限制。定义数据类型中的值的规定和限制。n规则是规则是单独存储的独立的
3、单独存储的独立的数据库对象数据库对象。n规则和约束可以同时使用,表的列可以有一个规规则和约束可以同时使用,表的列可以有一个规则及多个约束。则及多个约束。规则规则与与检查约束检查约束在功能上相似,在功能上相似,但在使用上有所区别。但在使用上有所区别。8.2 使用规则实施数据完整性使用规则实施数据完整性n规则与检查约束的区别规则与检查约束的区别检查约束检查约束是在是在CREATE TABLE或或ALTER TABLE语句语句中定义的,嵌入了被定义的表结构,即删除表的时候检中定义的,嵌入了被定义的表结构,即删除表的时候检查约束也就随之被删除。查约束也就随之被删除。而而规则规则需要用需要用CREATE
4、 RULE语句定义后才能使用,语句定义后才能使用,是独立于表之外的数据库对象,删除表并不能删除规则,是独立于表之外的数据库对象,删除表并不能删除规则,需要用需要用DROP RULE语句才能删除。语句才能删除。相比之下,使用在相比之下,使用在CREATE TABLE或或ALTER TABLE语句中定义的检查约束是更标准的限制列值的方法,但语句中定义的检查约束是更标准的限制列值的方法,但检查约束不能直接作用于用户定义数据类型。检查约束不能直接作用于用户定义数据类型。8.2 使用规则实施数据完整性使用规则实施数据完整性1用企业管理器创建规则用企业管理器创建规则8.2.1 8.2.1 创建规则创建规则
5、n在企业管理器中选择数据在企业管理器中选择数据库对象库对象“规则规则”,单击右,单击右键从快捷菜单中选择键从快捷菜单中选择“新新建规则建规则”选项,即会弹出选项,即会弹出如图所示的如图所示的“规则属性规则属性”对话框。对话框。n输入规则名称和表达式之输入规则名称和表达式之后,单击后,单击“确定确定”按钮,按钮,即完成规则的创建。即完成规则的创建。8.2.1 创建规则创建规则2用用CREATE RULE语句创建规则语句创建规则8.2.1 8.2.1 创建规则创建规则nCREATE RULE语句用于在当前数据库中语句用于在当前数据库中创建规则。创建规则。n其语法格式如下:其语法格式如下:CREAT
6、E RULE rule_name AS condition_expression8.2.1 8.2.1 创建规则创建规则CREATE RULE hire_date_ruleAS hire_date=1980-01-01 and hire_date=1 and value 18)8.4.4 8.4.4 检查约束检查约束例例8-25 创建一个订货表创建一个订货表orders,保证各订单,保证各订单的订货量必须不小于的订货量必须不小于10。CREATE TABLE orders(order_id char(8),p_id char(8),p_name char(10),quantity smalli
7、nt 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_name varchar(50),linkman_name char(8),address varchar(50),telephone char(12)NOT NULL CHECK(telephone LIKE 01-90-90-9-1-90-
8、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)约束通过定义列的默认值或使约束通过定义列的默认值或使用数据库的默认值对象绑定表的列,以确保用数据库的默认值对象绑定表的列,以确保在没有为某列指定数据时,来指定列的值。在没有为某列指定数据时,来指定列的值。n默认值可以是常量,也可以是表达式,还可默认值可以是常量,也可以是
9、表达式,还可以为以为NULL值。值。8.4.5 8.4.5 默认约束默认约束定义默认约束的语法格式定义默认约束的语法格式CONSTRAINT constraint_nameDEFAULT constant_expression FOR column_name8.4.5 8.4.5 默认约束默认约束例例8-27 在在Sales数据库中,为员工表数据库中,为员工表employee的的sex列添加默认约束,默认值是列添加默认约束,默认值是“男男”。ALTER TABLE employeeADD CONSTRAINT sex_default DEFAULT 男男 FOR sex8.4.5 8.4.5
10、默认约束默认约束例例8-28 更改表更改表employee为为hire_date列定义默认约束。列定义默认约束。ALTER TABLE employeeADD CONSTRAINT hire_date_df DEFAULT(getdate()FOR hire_date8.4.5 8.4.5 默认约束默认约束例例8-29 添加具有默认值的可为空的列添加具有默认值的可为空的列ALTER TABLE employeeADD hire_date datetime DEFAULT(getdate()WITH VALUES8.4.5 8.4.5 默认约束默认约束例例8-30 使用默认约束。使用默认约束。-
11、创建表创建表purchase_orderCREATE 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)NOT NULL,transporter_id char(4),order_num float NOT NULL,discount float DEFAULT(0),order_date datetime NOT NULL DEFAULT(GetDate(),send_date datetime,arriv
12、al_date datetime)-使用使用DEFAULT VALUES选项为选项为purchase_order表装载数据表装载数据INSERT INTO purchase_order DEFAULT VALUES8.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
13、,transporter_id char(4),order_num float NOT NULL,discount float CHECK(discount=0 AND discount order_date),CHECK(arrival_date send_date)/表级检查约束表级检查约束)(1)数据完整性有数据完整性有4种类型:实体完整性、域完整性、参照种类型:实体完整性、域完整性、参照完整性和用户定义的完整性。在完整性和用户定义的完整性。在SQL Server 2000中可以通中可以通过各种约束、默认、规则和触发器等数据库对象来保证数据过各种约束、默认、规则和触发器等数据库对象来保证
14、数据的完整性。的完整性。(2)规则实施数据的完整性:规则就是数据库中对存储在表规则实施数据的完整性:规则就是数据库中对存储在表的列或用户定义数据类型中的值的规定和限制。可以通过企的列或用户定义数据类型中的值的规定和限制。可以通过企业管理器和业管理器和Transact-SQL语句来创建、删除、查看规则以及语句来创建、删除、查看规则以及规则的绑定与松绑。规则的绑定与松绑。(3)默认值实施数据完整性:默认值是用户输入记录时没有默认值实施数据完整性:默认值是用户输入记录时没有指定具体数据的列中自动插入的数据。默认值对象可以用于指定具体数据的列中自动插入的数据。默认值对象可以用于多个列或用户定义数据类型
15、,它的管理与应用同规则有许多多个列或用户定义数据类型,它的管理与应用同规则有许多相似之处。表的一列或一个用户定义数据类型也只能与一个相似之处。表的一列或一个用户定义数据类型也只能与一个默认值相绑定。在默认值相绑定。在SQL Server中使用企业管理器和中使用企业管理器和Transact-SQL语句实现默认值的创建、查看、删除以及默认语句实现默认值的创建、查看、删除以及默认值的绑定与松绑。值的绑定与松绑。本章小结本章小结(4)使用约束实施数据完整性:约束是使用约束实施数据完整性:约束是SQL Server提供提供的自动保持数据库完整性的一种方法,定义了可输入表或的自动保持数据库完整性的一种方法,定义了可输入表或表的单个列中的数据的限制条件。在表的单个列中的数据的限制条件。在SQL Server中有中有6种种约束:非空值约束、主键约束、外键约束、唯一性约束、约束:非空值约束、主键约束、外键约束、唯一性约束、检查约束和默认约束。检查约束和默认约束。本章小结本章小结