sql数据库完整性约束

合集下载

完整性约束

完整性约束
– 触发器事件
z Insert、 delete、update
数据库系统概念----高级SQL
20
完整性控制
create trigger trigger-name insert
begin after
delete
on table-name
update [of column-name]
referencing
数据库系统概念----高级SQL
15
完整性控制
– 域约束的创建、撤消与添加
create domain AGE_DOMAIN smallint constraint DC_AGE check(value <= 25 and value
>= 15) alter domain AGE_DOMAIN
add constraint DC_AGE check(value <= 35 and value >= 15) alter domain AGE_DOMAIN
insert into loan values(nrow.account-number,
nrow.branch-name, – nrow.balance);
update account set balance = 0
where account.account-number = nrow.account-number
– 如果关系R2的外部码Fk与关系R1的主码Pk相对应,则R2 中的每一个元组的Fk值或者等于R1 中某个元组的Pk 值,或者为空值
– 意义:如果关系R2的某个元组t2参照了关系R1的某 个元组t1,则t1必须存在
– 例如关系S在Dno上的取值有两种可能
空值,表示该学生尚未分到任何系中;若非空值,则必须是DEPT关

第5章sql数据库完整性约束

第5章sql数据库完整性约束
CHECK约束是限制用户输入某一列的数据取值,即该 列只能输入一定范围的数据。 CHECK约束可以作为表定义的一部分在创建表时创建, 也可以添加到现有表中。表和列可以包含多个CHECK约束。 允许修改或删除现有的CHECK约束。 在现有表中添加CHECK约束时,该约束可以仅作用于 新数据,也可以同时作用于已有的数据。默认设置为 CHECK约束同时作用于已有数据和新数据。当希望现有数 据维持不变,则使用约束仅作用于新数据选项。
5.2.4 默认值(DEFAULT)约束
默认约束是指在用户未提供某些列的数据时,数据库 系统为用户提供的默认值。从而简化应用程序代码和提高 系统性能。 表的每一列都可包含一个DEFAULT定义。可以修改或 删除现有的DEFAULT定义,但必须首先删除已有的 DEFAULT定义,然后通过新定义重新创建。 1.利用Management Studio定义(删除)default约束 步骤1:右键要建立default约束的表选择“修改”。 步骤2:在弹出的窗口中对应字段的“默认值或绑定”处 输入默认值。 步骤3:点击保存即可。
PRIMARY KEY约束在表中定义一个主键,唯一的标 识表中的行。一个表只能有一个PRIMARY KEY约束。
当向表中的现有列添加PRIMARY KEY约束时,SQL Server将检查列中现有的数据以确保现有数据遵从主键的 规则,即无空值、无重复值。 每个表都应有一个主键。主键可以是一列或列组合。
CREATE TABLE kc_new (5-4)
(课程号 CHAR(4) NOT NULL CONSTRAINT pk_kch1 PRIMARY KEY, 课程名 CHAR(16) NOT NULL CONSTRAINT ix_kcm1 UNIQUE,
学分 SMALLINT,

使用SQL对数据进行完整性控制

使用SQL对数据进行完整性控制

使用SQL对数据进行完整性控制(3类完整性、CHECK短语、CONSTRAIN子句、触发器)。

用实验证实,当操作违反了完整性约束条件时,系统是如何处理的。

根据以下要求认真填写实验报告,记录所有的实验用例。

3类完整性
1.实体完整性:
(列级约束条件)
当操作违反了完整性约束条件时:
检查主码的各个属性是否为空,只要有一个为空就拒绝插入;
检查主码值是否唯一,如果不唯一则拒绝插入;
2.参照完整性:
当操作违反了完整性约束条件时:
①sc表中增加一个元组,该元组的sno属性值在表student中找不到一个元组,其sno属性值与之相等;(系统拒绝)
②sc表中修改一个元组,修改后该元组的sno属性值在表student中找不到一个元组,其sno 属性值与之相等;(系统拒绝)
③从student表中删除一个元组,造成sc表中某些元组的sno属性值在表student中找不到一个元组,其sno属性值与之相等;(系统拒绝/级联删除/设置为空值)
④从student表中修改一个元组,造成sc表中某些元组的sno属性值在表student中找不到一个元组,其sno属性值与之相等;(系统拒绝/级联删除/设置为空值)
3.用户定义的完整性:
列值非空、列值唯一、检查列值是否满足一个条件表达式(check短语)
当往表中插入元组或修改属性的值时,关系数据库管理系统将检查属性上的约束条件是否被满足,如果不满足则操作被拒绝执行:
Check语句并没有起约束作用:(在MySQL中check子句会被分析,但是是忽略的)
CONSTRAIN子句
触发器。

第五章-完整性约束

第五章-完整性约束

第五章-完整性约束⽬录1. 概述数据库的完整性指数据的正确性(correctness)和相容性(compat-ability)。

正确性:指数据符合现实语义。

相容性:指同⼀对象在不同关系表中的数据是符合逻辑的。

为了维护数据库的完整性,数据库管理系统(DBMS)必须实现如下功能:定义完整性约束在SQL标准中定义了⼀系列定义完整性约束的语句。

完整性检查检查数据是否符合完整性约束条件的机制成为完整性检查。

完整性检查通常在INSERT、UPDATE、DELETE语句执⾏后开始检查,也可在事务提交时检查。

违约处理在DBMS发现⽤户的操作违背了完整性约束条件,将采取⼀定的操作。

关系数据库管理系统使得完整性控制成为其核⼼⽀持的功能,从⽽能为所有⽤户和应⽤提供⼀致的数据库完整性。

数据库完整性主要分为:实体完整性、参照完整性和⽤户定义完整性。

在下⽂中,我将逐⼀介绍上述三类完整性,并且还会介绍⼀些SQL中定义的⼀些特性。

2. 实体完整性定义实体完整性⽰例:CREATE TABLE Student(Sno CHAR(9) PRIMARY KEY, -- 在列⼀级定义主码Sname CHAR(20),Ssex CHAR(2),Sage SMALLINT,Sdept CHAR(20)PRIMARY KEY(Sno) -- 在表⼀级定义主码);实体完整性检查和违约处理使⽤PRIMARY KEY短语定义关系的主码后。

每当⽤户插⼊或更新记录时,DBMS都会⾃动进⾏实体完整性检查:检查主码是否唯⼀,若不唯⼀便拒绝插⼊或修改。

检查主码的各个属性是否为空,若存在为空便拒绝插⼊或修改。

3. 参照完整性关系模型的参照完整性在创建表时使⽤FOREIGN KEY短语定义参照关系。

定义参照完整性⽰例:CREATE TABLE SC(Sno CHAR(9) NOT NULL,Cno CHAR(4) NOT NULL,Grade SMALLINT,PRIMARY KEY (Sno, Cno),FOREIGN KEY (Sno) REFERENCES Student(Sno), -- 定义表级参照完整性FOREIGN KEY (Cno) REFERENCES Student(Cno) -- 定义表级参照完整性);参照完整性检查如你所知,参照完整性将两个表中相应的元组联系起来。

第5章 完整性约束定义

第5章 完整性约束定义

2. 实体完整性

实体完整性是指保证表中所有的行唯一。实体完整性要求表中 的所有行都有一个唯一标识符。这个唯一标识符可能是一列, 也可能是几列的组合,称之为主键。也就是说,表中主键在所 有行上必须取值唯一。强制实体完整性的方法有:索引、 UNIQUE约束、PRIMARY KEY约束或 IDENTITY属性 。
参照完整性也叫引用完整性。参照完整性总是保证主关键字 (被引用表)和外部关键字(引用表)之间的参照关系。它涉 及两个或两个以上表数据的一致性维护。
2
3. 参照完整性

5.4.2

数据完整性实施方法
1. 声明型数据完整性 声明型数据完整性一般在对象创建时定义,由SQL Server强制 实施,通常使用约束、缺省值和规则来实现。实现基本数据完 整性的首选方法是使用声明型数据完整性。 声明型数据完整性作为数据库对象说明的一部分在语法中实现, 在CREATE TABLE和ALTER TABLE定义中使用CONSTRAINT、 DEFAULT等语句限制表中的值。使用这种方法实现数据完整性 简单且不易出错,系统直接将实现数据完整性的要求定义在表 和列上。 过程型数据完整性是指由某个过程引发而实施的数据完整性。 一般先写出实施数据完整性的条件,再写出强制该条件所执行 的用于保证数据完整性的脚本。通常由触发器和存储过程实现。 过程型数据完整性也可以在客户机和服务器上使用其它编程语 言和工具实现。
3

2. 过程型数据完整性

5.4.3 约束
1.约束的定义和类型

约束是SQL Server提供的自动保持数据库完整性的一种方法 。


列级约束:列级约束是行定义的一部分,只能够应用在一列上。
表级约束:表级约束的定义独立于列的定义,可以应用在一个表 中的多列上。

数据库中的数据完整性与一致性约束

数据库中的数据完整性与一致性约束

数据库中的数据完整性与一致性约束数据完整性和一致性是数据库设计与管理中非常重要的概念。

通过在数据库中应用各种约束条件,可以保障数据的准确性、完整性和一致性。

本文将介绍数据库中数据完整性和一致性约束的概念、作用、实现方式以及相关的最佳实践。

一、数据完整性约束的概念与作用数据完整性是指数据库中数据的准确性和一致性。

数据库中的数据应该符合预先定义的规则和条件,以确保数据的有效性和可靠性。

数据完整性约束是用于限制数据库中数据的输入、更新和删除操作,以保持数据的完整性。

数据完整性约束的作用是:1. 防止非法数据的插入:通过限制输入数据的规则和条件,可以避免不符合要求的数据被插入到数据库中。

2. 保证数据的一致性:通过定义数据之间的关系和依赖,可以保证数据在更新、删除操作时的一致性,避免数据的冲突和矛盾。

3. 提高数据质量和可靠性:数据完整性约束可以帮助用户更好地管理和使用数据库,提高数据的质量和可靠性。

二、数据完整性约束的实现方式数据库中的数据完整性约束可以通过以下几种方式实现:1. 主键约束:主键是一个可以唯一标识数据库表中每一行数据的字段或字段组合。

主键约束要求主键值唯一且非空,通过主键约束可以保证数据的唯一性和完整性。

2. 外键约束:外键是一个表中的字段,它与另一个表中的主键字段相关联。

外键约束要求外键值必须在关联表中存在,通过外键约束可以保证数据的一致性和完整性。

3. 唯一约束:唯一约束要求某个字段的值在整个表中必须唯一,通过唯一约束可以防止重复数据的插入和更新。

4. 默认值约束:默认值约束可以在插入新数据时,对某个字段设置默认值,确保数据的完整性。

5. 检查约束:检查约束是对某个字段的值进行规则验证,只有符合条件的数据才能被插入和更新。

三、数据一致性约束的概念与作用数据一致性是指数据库中的数据在任何时刻都满足特定的条件和规则,数据之间的关系和依赖保持一致。

数据一致性约束是用于维护数据一致性的规则和条件。

基于SQL Server数据库完整性约束的几点探讨

基于SQL Server数据库完整性约束的几点探讨

保证一个表 中的每一行必须是唯一 的 ( 元组的唯一性) 为 。 保 证实体完整性 , 需指 定一个表 中的一列或一组列作为它的主 键 (r m r e ) 一个表中每行的主键 必须确实含有 一个值。 P i ay k y 。

立即约 束和推迟 ( e t 约束 、 到 o) 状态约束和状态演变约 束。但 在实际 的系统中, 一般将数据完整性约束分为标准的数据完整
个表只 能含有一个主键 , 如需要从其它列中除去重复的值 ,
办 公 自动化杂 志 ・2 ・ 5
维普资讯
20年 1月 06 1 总第 9 3期
可 以将一个或 一组非主键列指定为一个候 选键 或唯 值 键 。 () 3 引用完整性 (e e e c n er t ) R fr n e it g i y
Wa g n Ho g in n xa g
( ct nl ehC l g i nn n ier g& T cn lg iesy F xn 0 0、 Vo a o a T c ol e La igE g ei i e o n n eh oo yUnv rt u i 13 0 i 2
Ab ta t h tgi srit f aa a ei ted sg O ec ne t f tI d ent nya e th blyo ted tb s , u loa e t sr c T ei e ryr t n d tb s e inC T o tn i.t o s ’o l f c ea it fh aa a e b t s f cs n t e a o sh o t i a
关键词 SL S r e 数据库 完 整性 约束 O e vr
S v r l s u so so h n e rt sr i tBa e e e a c s i n n t e I t g i Re t a n s d Di y

关系数据库的完整性约束

关系数据库的完整性约束

关系数据库的完整性约束关系数据库是一种常用的数据库模型,它使用表格来存储和组织数据。

在关系数据库中,完整性约束是一种重要的机制,用于确保数据的一致性和准确性。

本文将介绍关系数据库的完整性约束的定义、类型以及它们在数据库设计和数据管理中的作用。

一、完整性约束的定义完成性约束是指定义在关系数据库表上的规则,用于保证数据的完整性。

它可以限制某些列的取值范围、规定表之间的关系、强制规则和业务规则等。

通过定义完整性约束,可以防止不一致、不准确或不符合业务规则的数据进入数据库。

二、完整性约束的类型1. 实体完整性约束实体完整性约束用于确保每一行数据在主键列上具有唯一的值,并且不为空。

主键是关系数据库中用于唯一标识每一行数据的列或列组合。

2. 引用完整性约束引用完整性约束用于确保表之间的关系的一致性。

它结合了外键和主键的概念,确保在外键列中的值必须在参照表的主键列中存在。

这样可以防止不一致的关系建立或错误的数据引用。

3. 域完整性约束域完整性约束用于限制某些列的取值范围。

可以通过定义数据类型、长度、格式等约束来确保数据的准确性和一致性。

4. 用户自定义完整性约束用户自定义完整性约束是根据特定业务需求定义的约束规则。

可以使用触发器、存储过程或触发器等数据库对象来实现自定义完整性约束。

5. 断言完整性约束断言完整性约束是在SQL标准中定义的,用于在关系数据库中表示某种条件必须成立。

断言可以在表创建时定义或随后添加,以确保数据满足特定条件。

三、完整性约束的作用1. 数据的一致性和准确性:通过完整性约束,可以限制数据的取值范围和关系,确保数据的准确性和一致性。

2. 数据的安全性:完整性约束可以防止数据被非法篡改、删除或插入不符合规定的数据。

3. 业务规则的保护:通过完整性约束,可以确保数据库中存储的数据符合特定的业务规则。

4. 避免错误的数据关联:引用完整性约束可确保外键的合法性,防止不一致的数据关联。

5. 数据的可靠性和可维护性:通过定义完整性约束,可以为数据库提供可靠的结构和规范,便于数据的管理和维护。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
删除方法与建立的步骤类似。
2.利用T-SQL语句定义(删除)唯一性约束 (1)在创建表时创建唯一性约束 其语法格式如下。
语法格式1:(只有一个字段作为唯一约束) CREATE TABLE 数据表名 (列名 数据类型 CONSTRAINT 约束名 UNIQUE ) 【例5.3】创建和kc表结构相同的kc_new表,设置课程 名为唯一约束,约束名为ix_kcm1。
语法格式2:(有多个字段结合作为唯一约束,主键也类似) CREATE TABLE 数据表名
( …… CONSTRAINT 约束名 UNIQUE (列名1[,…n]) )
例:创建和cj表结构相同的cj_new表,设置学号和课程 号为唯一约束,约束名为IX_xhkch。
create table cj_new
1.利用Management Studio定义(删除)唯一性约束
步骤1:右键要建立唯一约束的表选择“修改” 。 步骤2:右击要设置唯一约束的字段(列)选择“索引/键”。 步骤3:在弹出的窗口中点击“添加”,在右边窗口的“名称” 处输入约束名,在类型中选择“唯一键”,点击“列”的浏览按钮 选中要设置为唯一约束的字段(如出生日期)。 步骤4:点击“关闭”按钮,保存即可。
字段名 部门编号 部门名称 电话号码
数据类型 char(5) varchar(10) char(13)
允许空 否,主键 否 是
CREATE TABLE bm
(5-1)
(
部门编号 CHAR(5) NOT NULL CONSTRAINT pk_bh
PRIMARY KEY,
部门名称 VARCHAR(10) NOT NULL,
第5章 数据完整性
5.1 数据完整性的基本概念
数据完整性包括实体完整性、域完整性、参照完整性和 用户定义的完整性。
1.实体完整性(Entity Integrity) 实体完整性用于保证数据库中数据表的每一个特定实体 都是唯一的。它可以通过主键约束(PRIMARY KEY)、唯 一键约束(UNIQUE)、索引或标识属性(IDENTITY)来 实现。 2.域完整性(Domain Integrity) 域完整性就是保证数据库中的数据取值的合理性,即保 证指定列的数据具有正确的数据类型、格式和有效的数据范 围。通过为表的列定义数据类型以及检查约束(CHECK)、 默认定义(DEFAULT)、非空(NOT NULL)和规则实现 限制数据范围,保证只有在有效范围内的值才能存储到列中。
5.2.2 唯一键(UNIQUE)约束
可使用UNIQUE约束确保在非主键列中不输入重复值。 在允许空值的列上保证唯一性时,应使用UNIQUE约束而不 是PRIMARY KEY约束,不过在该列中只允许有一个NULL 值。一个表可以定义多个UNIQUE约束,但只能定义一个 PRIMARY KEY约束。
1.利用Management Studio定义(删除)主键
2.利用T-SQL语句定义(删除)主键 (1)在创建表时创建主键约束
其语法格式如下 CREATE TABLE 数据表名 (列名 数据类型 [CONSTRAINT 约束名] PRIMARY KEY)
例:用命令方式新建如下所示的bm表,设置主键名为pk_bh。
4.用户定义的完整性(User-defined Integrity) 这是由用户定义的完整性。用户可以根据自己的业务规 则定义不属于任何完整性分类的完整性。
5.2 约束
约束是通过限制列中数据、行中数据以及表之间数据取 值从而保证数据完整性的非常有效和简便的方法。
5.2.1 主键(PRIMARY KEY)约束 PRIMARY KEY约束在表中定义一个主键,唯一的标 识表中的行。一个表只能有一个PRIMARY KEY约束。 当向表中的现有列添加PRIMARY KEY约束时,SQL Server将检查列中现有的数据以确保现有数据遵从主键的 规则,即无空值、无重复值。 每个表都应有一个主键。主键可以是一列或列组合。
电话号码 CHAR(13)
)
(2)向已有表中添加主键约束 其语法格式如下。
ALTER TABLE 表名 ADD [CONSTRAINT 约束名] PRIMARY KEY(列名1[,…n]))
例:先用图形方式删除cj表中的主键,然后用命令方式添 加主键为学号和课程号,主键名为pk_xhkch。
ALTER TABLE cj
CREATE TABLE kc_new
(5-4)
(课程号 CHAR(4) NOT NULL CONSTRAINT pk_kch1 PRIMARY KEY,
课程名 CHAR(16) NOT NULL CONSTRAINT ix_kcm1 UNIQUE,
学分 SMALLINT,
学时数 SMALLINT)
(5-5)
(
学号char(10) not null ,
课程号char(4) not null,
成绩numeric(5,2)
CONSTRAINT IX_xhkch UNIQUE (学号,课程号)
)
(2)向已有表中添加唯一约束,其语法格式如下。 ALTER TABLE 表名 ADD CONSTRAINT 约束名 UNIQUE (列名1[,…n]))
3.参照完整性(Referential Integrity) 参照完整性定义了一个关系数据库中,不同的表中列之 间的关系(父键与外键)。要求一个表中(参照表)的一列 或列组合的值必须与另一个表(被参照表)中的相关一列或 列组合的值相匹配。被引用的列或列组合称为父键,父键必 须是主键或唯一键,通常父键为主键,主键表(被参照表) 是主表。引用父键的一列或列组合称为外键,外键表(参照 表)是子表。子表的外键必须与主表的主键相匹配,只要依 赖某一主键的外键存在,主表中包含该主键的行就不能被删 除。
(5-2)
ADD CONSTRAINT pk_xhkch PRIMARY KEY(学号,课程号)
(3)删除主键约束 其语法格式如下: ALTER TABLE 表名 DROP CONSTRAINT 约束名 cj
(5-3)
DROP CONSTRAINT pk_xhkch
相关文档
最新文档