




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第第8章章 数据完整性数据完整性本章内容本章内容8.1 使用规则实施数据完整性使用规则实施数据完整性8.2 使用默认值实施数据完整性使用默认值实施数据完整性8.3 使用约束实施数据完整性使用约束实施数据完整性 数据完整性概述数据完整性概述n数据完整性防止数据库中存在不符合语义规定的数据完整性防止数据库中存在不符合语义规定的数据和防止因错误信息的输入输出造成无效操作数据和防止因错误信息的输入输出造成无效操作或错误信息而提出的。或错误信息而提出的。数据完整性有数据完整性有3种类型:种类型:实体完整性实体完整性(Entity Integrity)、参照完整性参照完整性(Referential Int
2、egrity)、用户定义的完整性用户定义的完整性(User-defined Integrity)。n在在SQL Server中可以通过各种规则中可以通过各种规则(Rule)、默认、默认(Default)、约束、约束(Constraint)和触发器和触发器(Trigger)等等数据库对象来保证数据的完整性。数据库对象来保证数据的完整性。8.1 使用规则实施数据完整性使用规则实施数据完整性8.1.1 创建规则创建规则8.1.2 查看规则查看规则8.1.3 规则的绑定与松绑规则的绑定与松绑8.1.4 删除规则删除规则8.1.1 创建规则创建规则n规则规则(Rule)就是数据库中对存储在表的列或用户定
3、义数据就是数据库中对存储在表的列或用户定义数据类型中的值的规定和限制。类型中的值的规定和限制。n规则是单独存储的独立的数据库对象。规则是单独存储的独立的数据库对象。n规则和约束可以同时使用,表的列可以有一个规则及多个规则和约束可以同时使用,表的列可以有一个规则及多个约束。规则与检查约束在功能上相似,但在使用上有所区约束。规则与检查约束在功能上相似,但在使用上有所区别。别。检查约束是在检查约束是在CREATE TABLE或或ALTER TABLE语句中定义的,语句中定义的,嵌入了被定义的表结构,即删除表的时候检查约束也就随之被删嵌入了被定义的表结构,即删除表的时候检查约束也就随之被删除。除。而规
4、则需要用而规则需要用CREATE RULE语句定义后才能使用,是独立于表语句定义后才能使用,是独立于表之外的数据库对象,删除表并不能删除规则,需要用之外的数据库对象,删除表并不能删除规则,需要用DROP RULE语句才能删除。语句才能删除。相比之下,使用在相比之下,使用在CREATE TABLE或或ALTER TABLE语句中定义语句中定义的检查约束是更标准的限制列值的方法,但检查约束不能直接作的检查约束是更标准的限制列值的方法,但检查约束不能直接作用于用户定义数据类型。用于用户定义数据类型。 8.2 8.2 使用规则实施数据完整性使用规则实施数据完整性2用用CREATE RULE语句创建规则
5、语句创建规则8.2.1 8.2.1 创建规则创建规则nCREATE RULE语句用于在当前数据库中语句用于在当前数据库中创建规则,其语法格式如下:创建规则,其语法格式如下:CREATE RULE rule_name AS condition_expression8.2.1 8.2.1 创建规则创建规则CREATE RULE hire_date_ruleAS hire_date=1980-01-01 and hire_date18)WITH CHECK | WITH NOCHECK 指定表中的数据是否用指定表中的数据是否用新添加的或重新启用的新添加的或重新启用的 FOREIGN KEY 或或 C
6、HECK 约束约束进行验证。如果没有指定,对于新约束,假定为进行验证。如果没有指定,对于新约束,假定为 WITH CHECK,对于重新启用的约束,假定为,对于重新启用的约束,假定为 WITH NOCHECK。 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 smallint CONSTRAINT chk_quantity CH
7、ECK (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-90-90-90-90-90-9
8、OR telephone LIKE 01-90-9-1-90-90-90-90-90-90-90-9)例例8-26 创建创建transporters表并定义检查约束表并定义检查约束8.4 8.4 使用约束实施数据完整性使用约束实施数据完整性8.3.5 默认约束默认约束n默认默认(Default)约束通过定义列的默认值或使约束通过定义列的默认值或使用数据库的默认值对象绑定表的列,以确用数据库的默认值对象绑定表的列,以确保在没有为某列指定数据时,来指定列的保在没有为某列指定数据时,来指定列的值。值。n默认值可以是常量,也可以是表达式,还默认值可以是常量,也可以是表达式,还可以为可以为NULL值。值
9、。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 sexn例例8-28 更改表更改表employee为为hire_
10、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 使用默认约束。使用默认约束。-创建表创建表purchase_orderCREATE TABLE
11、 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, arrival_date datetime)-
12、使用使用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, transp
13、orter_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 2005中可以通过各种约束、默认、规则和触发器等数据中可以通过各种约束、默认、规则和触发器等数据库对象来保证数据的完整性。库对象来保证数据的完整性。(2)规
14、则实施数据的完整性。规则是数据库中对存储在表的列或用户定)规则实施数据的完整性。规则是数据库中对存储在表的列或用户定义数据类型中的值的规定和限制。可以通过义数据类型中的值的规定和限制。可以通过Transact-SQL语句来创建、删除、语句来创建、删除、查看规则以及规则的绑定与松绑。查看规则以及规则的绑定与松绑。(3)默认值实施数据完整性。默认值是用户输入记录时没有指定具体数)默认值实施数据完整性。默认值是用户输入记录时没有指定具体数据的列中自动插入的数据。默认值对象可以用于多个列或用户定义数据类型,据的列中自动插入的数据。默认值对象可以用于多个列或用户定义数据类型,它的管理与应用同规则有许多相似之处。表的一列或一个用户定义数据类型它的管理与应用同规则有许多相似之处。表的一列或一个用户定义数据类型也只能与一个默认值相绑定。在也只能与一个默认值相绑定。在SQL Server中使用中使用Transact-SQL语句实现语句实现默认值的创建、查看、删除以及默认值的绑定与松绑。默认值的创建、查看、删除以
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 部门新员工培训计划
- 资产管理不到位安全事故分享
- DeepSeek如何促进文化交流与国际合作
- 封面设计水彩课件
- 踝关节治疗康复
- 道路危化品运输安全
- 酒店日常护理培训课件
- 酒店客房管理人员培训
- 人教版高中化学选择性必修1第二章化学反应速率与化学平衡化学反应速率课件
- 学生会干事工作总结
- 110kV升压站构支架组立施工方案
- CONSORT2010流程图(FlowDiagram)【模板】文档
- 2014年林产化工松香深加工行业分析报告
- 2023机场海关旅检岗位练兵练习试题及答案
- 沉淀滴定法-沉淀滴定法原理
- 游戏综合YY频道设计模板
- GB/T 43102-2023金属覆盖层孔隙率试验用亚硫酸/二氧化硫蒸气测定金或钯镀层孔隙率
- 糖尿病中医症状积分
- 灰姑娘童话故事英文版课件
- 儿科病房护理风险915课件
- 动脉穿刺置管术课件讲解
评论
0/150
提交评论