第4讲 实现数据完整性
《数据的完整性》课件

数据完整性的分类
数据完整性可以分为以下几类:实体完整性、参照完整性、域完整性以及其他自定义的完整性规则。
数据完整性的三个方面
数据完整性包括精确性、完备性和一致性。精确性确保数据的准确性;完。
数据完整性的实现方法
实现数据完整性的方法包括使用数据库约束、数据验证方法以及强化安全性 控制。这些方法可以防止非法数据插入和数据的无效修改。
数据库约束
数据库约束是保证数据完整性的重要手段。它包括主键约束、唯一约束、外 键约束、检查约束等,确保数据的有效性和一致性。
数据验证方法
数据验证方法用于验证数据的准确性和合法性。这些方法包括数据输入验证、 有效性检查、错误处理和异常处理等。
《数据的完整性》PPT课 件
数据的完整性是指数据的准确性、完备性和一致性。它在数据管理和网络安 全中起着至关重要的作用,影响企业的运营和决策。
什么是数据完整性
数据完整性是确保数据准确、完整且一致的状态。它涉及数据的创建、存储、 传输和维护过程,对数据的可靠性和价值有重要影响。
数据完整性的重要性
数据完整性对企业具有关键意义。它确保决策基于正确的数据,保护数据不 被篡改或损坏,提高运营效率和客户信任。
数据库实现数据完整性

动态验证
在数据库运行过程中,实时监测数据的变动 并验证其完整性。
人工验证
通过人工检查数据来确保其完整性,通常用 于大型数据集或复杂规则的验证。
自动验证
利用工具或脚本来自动完成数据的完整性验 证。
数据完整性的测试与验证工具
01
数据库管理工具
02
自动化测试工具
03
数据校验工具
如MySQL Workbench、Oracle SQL Developer等,提供数据完 整性的测试与验证功能。
外键约束
总结词
外键约束用于建立两个表之间的关系, 确保参照完整性和数据的一致性。
详细描述
外键约束指定一个字段或字段组合的 值必须是另一个表主键的有效值。这 有助于维护数据库中相关表之间的数 据一致性,防止无效或过时的数据关 联。
唯一约束
总结词
唯一约束用于确保数据库表中某个字段的唯一性,防止重复数据的产生。
通过事务处理,可以实现对多个相关数据修改操作的原子性控制,即这些 操作要么全部成功,要么全部失败回滚。
事务处理可以确保数据的完整性和一致性,避免因部分数据修改而导致的 异常情况。
05
数据完整性的测试与验证
数据完整性的测试方法
01
单元测试
对数据库中的每个函数或方法进 行测试,确保它们在各种输入条 件下都能正确地返回预期结果。
数据库实现数据完整性
目录
• 数据完整性的重要性 • 数据库完整性约束 • 数据完整性维护 • 数据完整性控制机制 • 数据完整性的测试与验确性的重要性
数据准确性的重要性
数据准确性是数据完整性的基础,只有准确的数据才能保证数据 库中信息的正确性和可靠性。
防止数据冗余
《数据完整性》课件

增强意识教育
加强数据完整性意识教育 ,提高企业和个人的数据 保护意识和能力。
持续关注数据完整性
建立监测机制
建立数据完整性的监测机 制,及时发现和解决数据 完整性问题。
持续改进
根据技术发展和业务需求 ,持续改进和完善数据完 整性保护措施。
合作与交流
加强国际合作与交流,共 同应对数据完整性的挑战 和机遇。
使用加密算法对数据进行加密,确保数据在传输和存储时的 机密性和安全性。
解密授权
只有授权的人员才能解密数据,并对数据进行相应的操作。
数据审计与监控
审计策略
定期对数据进行审查,检查数据的完 整性和安全性,以及数据的操作记录 。
监控机制
对数据的操作进行实时监控,及时发 现和处理任何异常或违规行为。
04
恢复策略
根据数据的重要性和丢失的后果 ,制定相应的恢复计划,包括备 份的频率、存储介质、恢复流程 等。
数据校验与验证
数据校验
通过特定的算法,对数据的完整性进 行检查,确保数据在传输或存储过程 中没有被篡改。
验证机制
对数据的来源、内容和完整性进行验 证,确保数据的真实性和可信度。
数据加密与解密
加密方法
数据完整性还包括数据的结构完整性 和应用完整性,即数据应符合其定义 和规范,满足业务需求和用户需求。
数据完整性的重要性
数据完整性是数据质量的核心要素之 一,是保证数据可信度和价值的前提 。
数据完整性关系到企业的声誉、品牌 形象和市场竞争力,对于维护消费者 权益和市场秩序也具有重要意义。
在信息化时代,数据已经成为重要的 生产要素和战略资源,数据完整性对 于企业决策、业务运行、管理效能等 方面具有至关重要的作用。
数据库实现数据完整性

限制输入到指定列的值只能为某些特定值 语法: [CONSTRAINT 约束名] CHECK (逻辑表达式) 两种强制域完整性的方法:CHECK 约束和规则 CHECK 约束定义了一个表达式,若数据修改语句使 得表达式值为 FALSE 的话,将拒绝语句执行 规则的功能和 CHECK 约束基本相同,除了语法不同, 能力稍弱。 规则可定义一次,然后对多个列分别绑定;而 CHECK 约束则需要对每个列定义。但 CHECK 约束 的功能略强一些(例如引用同行中其他列的值和调用 系统函数等)
创建CHECK 约束
在创建SC表时定义CHECK约束 Create Table SC ( sno char(5) not null, cno char(1) not null,
列级CHECK约束
grade decimal(4,1) check(grade>=0 and grade<=100),
primary key (sno,cno));
Copyright@2008
20
创建CHECK 约束
Create Table SC ( sno char(5) not null, cno char(1) not null, grade decimal(4,1), primary key (sno,cno), check(grade>=0 and grade<=100));
CREATE TABLE sc1 ( ……….,
约束名
constraint PK_SC PRIMARY KEY(sno,cno));
Copyright@2008 13
删除和添加主键
删除表上已定义的主键
ALTER TABLE SC1 DROP CONSTRAINT PK_SC;
实现数据完整性

实现数据完整性
24
使用T-SQL语句创建外键约束
语法:
▪ [CONSTRAINT constrain_name] ▪ Foreign Key [(字段名[,...n]) ]
创建外键 约束的列
▪ Reference ref_table (ref_column[...n])
主键表的表 名和列名
实现数据完整性
项目 员工 开始 结束 负责 编号 编号 时间 时间 内容
实现数据完整性
10
使用T-SQL语句创建Primary Key约束
(1)格式: [CONSTRAINT constraint_name] Primary Key [(字段名[,…n])] (2)参数说明:constraint_name:约束
4、用户定义完整性:用户定义不属于其他任何 完整性分类的特定规则。
实现数据完整性
3
系代码 系名 系主任 A01 经管 张明 A02 计算机 李晓海
专业代码 专业名 A0101 会计 A0102 物流
所属系 A01 A01
班号 所属专业 入学年份 0601 A0101 2006.9 0602 A0101 2006.9
Create table customers (客户编号 char(4) primary key)
实现数据完整性
12
例题: ▪ 为项目参与表(addproject)设置主键
项目 员工 开始 结束 负责 编号 编号 时间 时间 内容
Create table addproject
( 项目编号 char(4) , 员工编号 char(7) , primary key(项目编号 ,员工编号 ))
▪ 定义表间参照关系:先定义主表的主键, 再对从表定义外键约束。
第四章 实现数据的完整性

制了域完整性。 部分语法 [CONSTRAINT contraint_name] DEFAULT contraint_expression 如果没有提供 contact name,下面的例子在 dbo.Customers 表中添加一个
约束是强制数据完整性的较好方法。本节讨论如何决定使用的约束类型,每 种约束强制哪种数据完整性和如何定义约束。
4.4.1 决定使用哪种约束类型
完整性类型 域
实体 参照
第 四 章 实 现 数 据 的 完 整 性 83
约束类型 DEFAULT CHECK REFERENTIAL PRIMARYKEY UNQUE FOREIGNKEY CHECK
4.2 数据完整性类型
数据库设计时最重要的一步是确定用于强制数据完整性的最好方法。数据完 整性指的是存储在数据库中的数据的一致性和准确性。数据完整性分为以卞几 种。
1、域完整性(Domain integrity) 域 (或 列 )完 整 性 指 定 对 列 有 效 的 一 组 值 并 决 定 是 否 允 许 有 空 值 。通 过 使 用 有
86 MCSE 2000 系列—SQL 2000 编程
以 下 系 统 表 存 储 了 约 束 定 义 : syscomments , sysreferences 和 sysconstrainto
4.5 约束类型
本节讲述约束的类型,包括 DEFAULT 约束、CHECK 约束、PRIMARYKEY 约束、 UNIQUE 约束、FOREIGN KEY 约束和级联参考完整性
数据库中数据完整性的保证与维护

数据库中数据完整性的保证与维护数据完整性是指数据库中的数据符合事先定义的一系列约束和规则,能够满足应用程序或用户的需求,并且在数据的创建、更新和删除过程中能够保持数据的正确性和一致性。
为了保证数据的完整性,数据库中需要采取一系列措施来进行数据的验证、限制和修复。
首先,数据库必须定义一组严格的约束规则,包括实体完整性、域完整性、参照完整性和用户自定义完整性。
实体完整性定义了每一行数据都必须有主键,保证了每一行数据的唯一性。
域完整性规定了每个字段的数据类型、长度和取值范围,确保了数据的有效性。
参照完整性要求任何外键值必须是源表中的主键值,保证了数据之间的一致性。
用户自定义完整性允许用户根据具体需求定义自己的约束规则。
这些约束规则可以通过数据库管理系统来创建和维护,以保证数据的完整性。
其次,数据库应用程序需要实施一系列的数据验证机制,如输入数据合法性验证和业务逻辑验证。
输入数据合法性验证要求用户输入数据符合字段的数据类型和格式要求,防止非法数据进入数据库。
业务逻辑验证是根据具体业务规则对数据进行验证,确保数据的正确性和一致性。
此外,数据验证还可以利用触发器、约束和存储过程等数据库功能来完成,这样可以确保在数据操作过程中对数据进行预定义的检查和约束,提高数据完整性的保证。
另外,数据库还需要采取一些措施来防止数据的非法修改或删除,以保持数据的完整性。
首先,可以采用权限管理和访问控制来限制用户对数据的操作权限,只有经过授权的用户才能对数据进行修改和删除。
其次,数据库可以记录数据的修改日志,以便在需要时进行审计和验证数据的完整性。
此外,还可以定期备份和恢复数据库,以防止数据的不可逆性损坏和丢失。
维护数据完整性还包括数据的清洗和修复。
数据清洗是针对已存在的数据进行的操作,用于修复或删除数据库中的脏数据、重复数据和无效数据等。
数据清洗可通过数据清理工具、脚本和人工干预来完成。
修复数据的有效性可以借助数据库的批处理操作、触发器和存储过程等功能来实现。
《数据的完整性》PPT课件教学文案

4.外码是否允许空值的问题
实现参照完整性时,系统除了应提供 定义外码的机制,还应提供定义外码列是 否允许空值的机制。
例:部门表与职工—部门表,职工—部 门表中部门可取空值;但学生表与学生— 选课表,学生—选课表不能取空值。
8.3 用户定义的完整性 P156——P159 8.4 完整性约束命名子句 P158
首先向被参照关系中插入相应的元组,其主码值 等于参照关系插入元组的外码值,然后向参照关系插 入元组。
3.修改被参照表主码值的问题 (1)不允许修改主码值
在有些RDBMS中,不允许修改被参照表的 主码值。
(2)允许级联修改或外码值置空
在有些RDBMS中,允许修改关系主码, 但必须保证主码值与对应外码值一致。
删除被参照关系的元组,并将参照关系中相应元组的 外码值置空值。
2.在参照关系中插入元组时的问题 当参照关系插入某个元组,而被参照关系不存在
相应的元组,其主码值与参照关系插入元组的外码值 相同,这时可有以下策略: (1)受限插入
仅当被参照关系中存在相应的元组,其主码 值与参照关系插入元组的外码值相同时,系统才执行 插入操作,否则拒绝此操作。 (2)递归插入
USE XSBOOK IF EXISTS(SELECT name FROM sysobjects
WHERE NAME='tjy_insert' and type='TR') DROP TRIGGER tjy_insert GO CREATE TRIGGER tjy_insert ON jy FOR INSERT AS IF EXISTS(SELECT *
BEGIN RAISERROR ('违背数据的一致性.', 16, 1) ROLLBACK TRANSACTION
数据完整性——精选推荐

数据完整性数据完整性1.什么是数据完整性?存储在数据库中的数据能够正确的反映实际情况,规定数据的输⼊数据不能是⽆效值,错误值和乱码等。
2.数据完整性的类型(1)实体完整性:标识符或主键的完整性,使其值唯⼀(2)域完整性:限制类型,格式和取值范围(3)引⽤完整性:保持原表和引⽤表数据⼀致性(4)⽤户⾃定义完整性:根据⽤户的要求⾃定义业务规则3.数据完整性的实现⽅式实体完整性:主键约束、唯⼀的约束域完整性:检查约束、默认值约束、外键约束引⽤完整性:外键约束⽤户⾃定义完整性:以上所有约束⾃由组合4.什么是约束?通过创建表来限制属性或表中数据的完整性,也可以通过修改语句修改约束条件。
约束⼜分为⾏级约束和表级约束,⾏级约束和表级约束本质上是⼀样的,只是约束范围不同。
⾮空约束、主键约束⼀般为⾏级约束,外键约束(联合主键)是表级约束;检查约束(check)随意⼆、⾮空约束确保当前约束的属性不为空置,⾏级约束⾮空约束的关键字: not null三、唯⼀约束指定某⼀列或某⼏列的数据不能重复唯⼀约束关键字:unique可以通过constaint给约束取名,⽅便根据名称删除约束;同时设定⾮空和唯⼀默认为主键创建复合唯⼀约束(表级约束)对多个列进⾏唯⼀约束,约束两个以上的字段(属性)不能同时⼀致。
constraint uni_tno_tname unqiue(t_no,t_name)这⾥教师编号与教师名称可以允许其中⼀个是相同的,但不能同时相同。
四、主键约束⾮空约束+唯⼀约束,且每个表只能有⼀个主键约束(表级),在多列联合的主键约束时,联合主键的值不能重复。
主键约束关键字:primaty key。
如果数据表的属性列中存在重复或者null值,就⽆法以此属性为主键1.在创建表时设置主键约束设置单列主键s_no int primaty key,设置多个属性为联合主键constraint pri_tno_tname primary key(t_no,t_name)2.添加主键约束alter table teacher add constraint pri_tno_tnameprimaty key(t_no);3.删除主键约束alter table teacher drop primary key;4.⾃增列在插⼊数据时,如果不规定属性的值,其值就会根据上⼀个属性的值⾃动加1。
实现数据完整性.ppt

数 实现数据完整性
第一节 数据完整性 第二节 约束 第三节 规则和缺省
据 库 技 术 及 应 用
数 第一节 数据完整性
一,强制数据完整性 二,使用IDENTITY属性强制实施数据完整性 使用 属性强制实施数据完整性
据 库 技 术 及 应 用
数据完整性指数据库中存储数据的一致性,即在 数据完整性指数据库中存储数据的一致性, 设计表时需要识别列的有效值并决定如何强制实现列 中数据的完整性. 中数据的完整性.常规数据库管理系统需要在每个应 用程序中编码来实现数据完整性逻辑. 用程序中编码来实现数据完整性逻辑.SQL Server在 在 自身数据库中存储该逻辑, 自身数据库中存储该逻辑,确保一致性并简化了维护 .
2. UNIQUE 约束
UNIQUE 约束用于在非主关键字列上实施唯 一性. 一个表中可以创建多个唯一约束. 一性. 一个表中可以创建多个唯一约束. 语法: 语法 CREATE TABLE 表名 ( 列名 数据类型 CONSTRAINT 约束名 (unq) UNIQUE [CLUSTERED|NONCLUSTERED] )
数 据 库 技 术 及 应 用
定义IDENTITY列的语法: 列的语法: 定义 列的语法 IDENTITY(基数值,步长值) 基数值,步长值 基数值 参数说明: 参数说明: 基数值 指定IDENTITY列的初始值. 列的初始值. 指定 列的初始值 步长值 指定为列生成下一个值的增量. 指定为列生成下一个值的增量. 注意,必须同时指定基数值和步长值, 注意,必须同时指定基数值和步长值,或者二者都不 指定.如果二者都未指定, 指定.如果二者都未指定,则取默认值 (1,1). .
数 据 库 技 术 及 应 用
如何在数据库管理中实现数据完整性

如何在数据库管理中实现数据完整性在当今数字化的时代,数据已经成为企业和组织的重要资产。
而数据库管理中的数据完整性,就像是守护这些资产的坚固堡垒,确保数据的准确性、一致性和可靠性。
那么,如何在数据库管理中实现数据完整性呢?这是一个值得深入探讨的重要问题。
首先,我们需要明确什么是数据完整性。
简单来说,数据完整性指的是数据的准确性和一致性,即在数据库中存储的数据应该是正确的、完整的,并且符合预期的规则和约束。
如果数据完整性得不到保障,可能会导致错误的决策、业务流程的中断,甚至给企业带来严重的经济损失。
为了实现数据完整性,我们可以从以下几个方面入手。
一、设计合理的数据库结构在数据库设计阶段,就要充分考虑数据完整性的需求。
合理的数据库结构是实现数据完整性的基础。
这包括选择合适的数据类型、定义主键和外键、建立索引等。
选择合适的数据类型可以确保数据的存储和处理的准确性。
例如,对于整数类型的数据,应该选择适当的整数类型(如 smallint、int 或bigint),以避免数据溢出或精度损失。
定义主键可以唯一标识每一条记录,确保数据的唯一性。
外键则用于建立表与表之间的关联,保证数据的一致性。
通过定义外键约束,可以防止在相关表中插入或更新不存在的关联数据。
建立索引可以提高数据的查询和检索效率,但也要注意不要过度索引,以免影响数据的插入和更新性能。
二、制定并实施数据规则和约束在数据库中,可以通过定义各种规则和约束来保证数据的完整性。
常见的约束包括主键约束、唯一约束、非空约束、检查约束和默认值约束等。
主键约束确保表中的每一行都有唯一的标识符,避免重复数据的出现。
唯一约束则保证某一列的值在整个表中是唯一的。
非空约束要求某些列必须有值,不能为 NULL。
这可以确保关键信息不会缺失。
检查约束可以用于定义更复杂的条件,例如限制某个列的值在特定的范围内,或者满足特定的格式要求。
默认值约束为没有提供值的列提供默认的取值,保证数据的完整性。
数据完整性之数据完整性的分类

2
一、域完整性——列完整性
➢ 指给定列输入的有效性,即保证指定列的数据具 有正确的数据类型、格式和有效的数据范围。
➢ 实现域完整性可通过定义相应的定义数据类型、 NOT NULL 、 CHECK约束、默认值约束、默 认值对象、规则对象等方法来实现。
据库中,对从表中该键值的所有引用要进行一致 的更改。 ➢ (3)如果主表中没有关联的记录,则不能将记 录添加到从表中。 ➢ (4)如果要删除主表中的某一记录,应先删除 从表中与该记录匹配的相关记录。
7
本节介绍到这,下节会为大家介绍 域完整性的实现
8
LOGO
Add your company slogan
➢ 课外参考:3ຫໍສະໝຸດ 二.实体完整性——行的完整性
➢ 是用于保证数据表中每一个特定实体的记录都是 唯一的。
➢ 通过UNIQUE约束、PRIMARY KEY约束或 IDENTITY属性可以实现数据的实体完整性。
➢ 课外参考:
4
三.参照完整性
➢ 当增加、修改或删除数据表中的记录时,可以借 助参照完整性来保证相关联表之间数据的一致性。 参照完整性可以保证主表中的数据与从表中数据 的一致性。
➢ 参照完整性是通过定义外键与主键之间或外键与 唯一键之间的对应关系来实现的。
➢ 参照完整性确保同一键值在所有表中一致。
5
三.参照完整性
学号(主键) 200501 200502
姓名 王红 刘林
学号(外键) 200501 200501 200501 200501 200502 200502 200502 200502
数据完整性
➢1、数据完整性的分类 ➢2、域完整性的实现 ➢3、实体完整性的实现 ➢4、参照完整性的实现
数据完整性概述及提高数据完整性的办法

1.数据完整性概述存储是计算机中的数据可以说每天都在增加,与此同时,需要访问这些数据的人数也在增长,这样,无疑对数据的完整性的潜在需求也随之而增长。
数据完整性这一术语用来泛指与损坏和丢失相对的数据的状态,它通常表明数据的可靠与准确性是可以信赖的,同时,在不好的情况下,意味着数据有可能是无效的,或不完整的。
数据完整性方面的要点:存储器中的数据必须和它被输入时或最后一次被修改时的一模一样;用来建立信息的计算机、外围设备或配件都必须正确地工作;数据不能被其他人非法利用。
本章将从数据完整性和完整性的一般解决方法二个方面来论述数据完整性。
1.1. 数据完整性对数据完整性来说,危险常常来自一些简单的计算不周、混淆、人为的错误判断或设备出错等导致的数据丢失、损坏或不当的改变。
而数据完整性的目的就是保证计算机系统,或计算机网络系统上的信息处于一种完整和未受损坏的状态。
这意味着数据不会由于有意或无意的事件而被改变或丢失。
数据完整性的丧失意味着发生了导致数据被丢失或被改变的事情。
为此,首先将检查导致数据完整性被破坏的常见的原因,以便采用适当的方法以予解决,从而提高数据完整性的程度。
在分布式计算环境中,或在计算机网络环境中,如果通过PC、工作站、服务器、中型机和主机系统来改善数据完整性已变得一天比一天困难。
原因何在?许多机构为了给它们的用户提供尽可能好的服务都采用不同的平台来组成系统,这仿佛拥有不同的硬件平台一样,使这些机构一般都拥有使用不同文件系统和系统服务的机器。
E-mail交换系统成了对协同工作的网络系统的需求;协议的不同需要网关或协议的转换;系统开发语言和编译器的不同也产生了应用上兼容性的问题,凡此种种,造成了系统之间通信上可能产生的问题。
其结果使之处于一种充满了潜在的不稳定性和难于预测的情况之当。
一般地来说,影响数据完整性的因素主要的有如下5种:●硬件故障●网络故障●逻辑问题●意外的灾难性事件●人为的因素1、硬件故障任何一种高性能的机器都不可能长久地运行下不发生任何故障,这也包括了计算机,常见的影响数据完整性的硬件故障有:●磁盘故障●I/O控制器故障●电源故障●存储器故障●介质、设备和其它备份的故障●芯片和主板故障2、网络故障在LAN上,数据在机器之间通过传输介质高速传递,用来连接机器设备的线缆总是处在干扰和物理损伤在内的多种威胁之中,使计算机之间难于通信或根本无法通信的事件,最终导致数据的损毁或丢失。
第4章--数据完整性的设计与实现PPT课件

2021/7/23
3
完整性的概念
之所以要引入数据完整性是为了在数据 的添加、删除、修改等操作中不出现数 据的破坏或多个表数据不一致
数据完整性是指存储在数据库中的数据 正确无误并且相关数据具有一致性
2021/7/23
4
完整性的类型
实体完整性
实体:表中的记录,一个实体就是指表 中的一条记录。
域完整性是用来保证在数据表中输入有 效的数据值。域完整性可以通过定义字 段的数据类型、设置字段非空、检查约 束、默认约束和规则来实现。
2021/7/23
33
4.3.1 默认约束
默认约束完成的功能是对于设置了默认 约束的字段,如果在录入记录时没有提 供输入值,则系统会自动为该字段填入 默认值。
默认值可以是常量、函数或者空值。
2021/7/23
36
4.3.2 检查约束
设置检查约束的目的是对输入的数据值 进行检查,满足条件的数据可以保存在 数据表中,对于不满足条件的数据则拒 绝接受。在某一个数据表中,对于每一 个字段可以设置多个检查约束。
2021/7/23
37
1.使用企业管理器管理检查约束
例4-9 使用企业管理器在“图书基本信 息表”中为“定价”字段设置检查约束, 要求输入的数据必须大于0。
在表设计器中,右击选择check约束
2021/7/23
38
2.使用Transact-SQL语句设置检 查约束
使用Transact-SQL语句设置检查约束的 语法形式如下:
CONSTRAINT constraint_name CHECK [NOT FOR REPLICATION] (logical_expression)
2021/7/23
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
例1 创建Orders表,包括OrderID、CustomerID、 SaleID和OrderDate四个字段,其中OrderID字段设为 主键。
Orderid int primary key
CREATE TABLE orders (orderid int constraint pk_orderid PRIMARY KEY , Customerid char(3), Saleid char(3), Orderdate datetime )
可以添加约束到已有数据的表上
可添加单列或多列约束
若约束应用于单列,称为列级约束 若约束引用了多列,称为表级约束,即使它并没有引用表
中的所有列
下一页
CREATE TABLE table_name
(column_name data_type[[CONSTRAINT constraint_name]constraint_type][,…n]) constraint_name:要创建约束的名字, 若省略时,则SQL serer会自动为约束 提供一个名字
返回
实体完整性规则
若属性A是基本关系R的主属性,则属性A不能取空 值。 例如:在关系“学生(学号,姓名,性别,出生日 期,联系方式)”中,“学号”属性为主码,则学 号不能取空值。
返回
引用完整性
例1 学生实体和专业实体可以用下面的关系表示, 其中主码用下划线标识:
学生(学号,姓名,性别,专业号,出生日期) 专业(专业号,专业名) 例2 学生,课程,学生与课程之间的多对多联系可以 用如下三个关系表示: 学生(学号,姓名,性别,专业号,出生日期) 课程(课程号,课程名,学分) 选修(学号,课程号,成绩) 例3 学生(学号,姓名,性别,专业号,年龄,班长)
例 :修改orders表,在orderdate字段创建default约 束,将当前日期设为默认值,当未给orders表的订 货日期提供值时,取当前日期插入。
ALTER TABLE orders ADD CONSTRAINT default_date DEFAULT getdate()
FOR orderdate
返回
删除约束 ALTER TABLE table_name DROP CONSTRAINT constraint_name
只删除约束,并没有删除表; 当删除表时,在该表上定义的约束将自动取消。
使用约束的注意事项
4.2.3 使用约束的注意事项
可直接在表上创建和删除约束,而不必删除并重建 表
当给一个表有 数据是否违反约束
)
例2 修改学生表S,在Scity字段创建一个CHECK约束 ,以限制只能输入有效的城市。
对现有数据不进行检查
ALTER TABLE s WITH NOCHECK ADD CONSTRAINT check_city
CHECK(Scity IN(‘北京’,’上海’,’天津’,’重庆 ’))
例3 修改Salers表,在Telephone字段创建一个 CHECK约束,使得该字段的值的格式为([0-9][0-9][09])[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]。
CREATE TABLE s
CHECK(sage
(sid int primary key,
BETWEEN 18 AND 30)
sname char(20),
sage int CONSTRAINT check_age CHECK (sage>=18 and
sage <=30),
scity char(10)
CHECK 约束
4.3.2 CHECK 约束
限制输入到指定列的值只能为某些特定值
语法: [CONSTRAINT 约束名] CHECK (逻辑表达式)
两种强制域完整性的方法:CHECK 约束和规则
CHECK 约束定义了一个表达式,若数据修改语句使得表达 式值为 FALSE 的话,将拒绝语句执行
规则的功能和 CHECK 约束基本相同,除了语法不同,能 力稍弱。规则是为了向下兼容而保留的
引用完整性规则 若属性(或属性组)F是基本关系R的外码,它
与基本关系S的主码KS相对应,则对于中每个元组 在上的值必须为:
或者取空值
或者等于S中某个元组的主码值
第4章 实现数据完整性
数据完整性的类型 定义约束 约束的类型 使用默认值和规则
定义约束
决定使用何种约束 创建约束 使用约束的注意事项
constraint_type:要创建的约束类型
返回
使用alter table 语句创建约束 ALTER TABLE table_name [ WITH CHECK | WITH NOCHECK ] ADD [ CONSTRAINT constraint_name ] constraint_type FOR column_name
数据完整性的类型 定义约束 约束的类型 使用默认值和规则
约束的类型
DEFAULT 约束 CHECK 约束 PRIMARY KEY 约束 UNIQUE 约束 FOREIGN KEY 约束 级联引用完整性
4.3 约束的类型
DEFAULT 约束
4.3.1 DEFAULT 约束
如果一个列的值在 INSERT 语句中没有指定,DEFAULT 约束将自 动输入一个值,可以是预先指定的常量、NULL 或者一个系统函 数运行时的值
例3 titleauthor表包含au_id、title_id、au_ord和 royaltyper四个字段,在au_id和title_id上创建主键。
USE pubs ALTER TABLE titleauthor ADD CONSTRAINT pk_title_author
建议创建约束的时候指定名称,否则系统将为约束 自动产生一个复杂的名称
名称必须惟一,且符合 SQL Server 标识符的规则 查看约束的信息
系统存储过程:sp_helpconstraint、sp_help
系统表:syscomments、sysreferences、sysconstraints
第4章 实现数据完整性
规则可定义一次,然后对多个列分别绑定;而 CHECK 约 束则需要对每个列定义。但 CHECK 约束的功能略强一些 (例如引用同行中其他列的值和调用系统函数等)
CHECK 约束(续)
4.3.2 CHECK 约束
CHECK 约束示例
为 Employees 表中的 BrithDate 增加 CHECK 约束,使出生日期处于可接受的日期范 围内
PRIMARY KEY 约束在表中定义了一个惟一标识每一 列的主键
语法:[CONSTRAINT 约束名 ] PRIMARY KEY [CLUSTERED | NONCLUSTERED ] { (列[,...n])}
应用 PRIMARY KEY 约束的注意事项
每张表只能有一个 PRIMARY KEY 约束 输入的值必须是惟一的 不允许空值 将在指定列上创建惟一索引
UNIQUE
确保在非主键列中不输入重复值, 并创建一个索引以增强性能。允许 空值
FOREIGN KEY 定义一列或多列的值与同表或其他 表中主键的值匹配
CHECK
基于同表中其他列的值,指定列中 可接受的数据值
创建约束
4.2.2 创建约束
使用 CREATE TABLE 或者 ALTER TABLE
CREATE TABLE 是在创建表时创建约束 ALTER TABLE 是在一个已有的表上创建约束
应用 DEFAULT 约束的注意事项
DEFAULT 约束创建时将检查表中的现存数据 为具有 PRIMARY KEY 或 UNIQUE 约束的列指定默认值是没有意义的 每列只能定义一个 DEFAULT 约束 常量值外面可以加或者不加括号,字符或者日期常量必须加上单引
号或双引号
DEFAULT 约束(续)
USE Northwind ALTER TABLE dbo.Employees ADD CONSTRAINT CK_birthdate CHECK (BirthDate > '01-01-1900' AND BirthDate < getdate())
例1 创建学生表S,包含Sid(学号)、Sname(姓名)、Sage( 年龄)以及Scity(城市)四个字段,并在Sage字段创建一个 CHECK约束,使得Sage的值在18—30岁之间。
语法: [CONSTRAINT 约束名] DEFAULT 约束表达式 FOR COLUMN_NAME
创建 DEFAULT 约束的两种方法
创建一个默认(CREATE DEFAULT),然后使用存储过程 sp_bindefault 将默认绑定到一个列
CREATE TABLE 或 ALTER TABLE 时使用 DEFAUTL 约束
PRIMARY KEY 约束(续)
4.3.3 PRIMARY KEY 约束
PRIMARY KEY 约束示例
在 Customers 表上创建 PRIMARY KEY 约束,指明表 的主键值是 CustomerID,并且创建非聚集索引以强 制约束
USE Northwind ALTER TABLE dbo.Customers ADD CONSTRAINT PK_Customers
ALTER TABLE salers ADD CONSTRAINT check_telephone
CHECK (telephone like’([0-9][0-9][0-9])[0-9][0-9] [0- 9][0-9][0-9][0-9][0-9][0-9]’)
PRIMARY KEY 约束
4.3.3 PRIMARY KEY 约束