第5篇完整性约束定义
2. 过程型数据完整性
过程型数据完整性是指由某个过程引发而实施的数据完整性。 一般先写出实施数据完整性的条件,再写出强制该条件所执行 的用于保证数据完整性的脚本。通常由触发器和存储过程实现。 过程型数据完整性也可以在客户机和服务器上使用其它编程语 言和工具实现。
[(ref_column) ] | DEFAULT constant_expression | CHECK(logical_expression)} ] [,...n] )
7
其中: table_name:创建约束所在的表的名称。 column_name:列名。 data_type:数据类型。 constraint_name:约束名。 在创建、修改、实现约束时注意以下几点:
① 可以在已有的表上创建、修改、删除约束,而不必删 除并重建表。
② 可以在应用程序中创建错误检查逻辑,测试是否违反 约束。
③ 在给表添加约束时,SQL将验证表中已有数据是否满 足正在添加的约束。
8
⑵ 缺省约束 缺省约束是指当向数据库中的表插入数据时,如果用户
没有明确给出某列的值时,SQL Server自动为该列输入 的考虑以下因素: DEFAULT约束只能用于INSERT语句 不能用于具有IDENTITY属性的列 每列只能有一个DEFAULT约束 【例1】 为数据库JWGL中表teacher的SEX(性别)字段 创建一个缺省约束,缺省值为1(男) USE JWGL GO ALTER TABLE teacher ADD CONSTRAINT default_sex DEFAULT 1 FOR SEX
唯一约束、外键约束(参照约束)。 非空约束(NOT NULL):表中的某些列必须存在有效值,不允
许有空值出现。这是最简单的数据完整性约束,可在建表时将该 列声明为NOT NULL即可。 缺省约束(DEFALUT CONSTRAINTS):当向数据库中的表插 入数据时,如果用户没有明确给出某列的值,SQL Server自动为 该列输入指定值。
CREATE TABLE table_name (column_name data_type [[CONSTRAINT constraint_name] {PRIMARY KEY [CLUSTERED | NONCLUSTERED] | UNIQUE [CLUSTERED | NONCLUSTERED] | [FOREIGN KEY] REFERENCES ref_table
5.4 数据完整性的概念与实施方法
5.4.1 数据完整性概念 数据完整性是指数据的正确性、完备性和一致性,是
衡量数据库质量好坏的重要标准。 在用INSERT、DELETE、UPDATE语句修改数据库内容
时,数据的完整性可能会遭到破坏。可能会存在下列 情况:无效的数据被添加到数据库的表中。如:将学 生考试成绩输入成负数; SQL Server提供了对数据库中表、列实施数据完整性 的方法。对表进行设计数据完整性有两个重要内容: 标识列的有效值和确定如何强制列中的数据完整性。
索引,也可以是非聚簇索引,默认是聚簇索引。 【例3】 将数据库JWGL中teacher表的teacher_id(教师号)字段设为主
键。 USE JWGL GO ALTER TABLE teacher ADD CONSTRAINT PK_teacher_id PRIMARY KEY clustered (teacher_id)
5
不同的约束强制不同类型的数据完整性。表 中 给出了两者的对应关系。
完整性类型 域完整性
实体完整性 参照完整性
约束类型 非空约束 DEFAULT CHECK PRIMARY KEY UNIQUE FOREIGN KEY
6
2.使用T-SQL语言创建、管理约束 (1)使用CREATE TABLE语句创建约束 使用CREATE TABLE语句创建约束的一般语法如下:
3
5.4.3 约束
1.约束的定义和类型 约束是SQL Server提供的自动保持数据库完整性的一种方法 。 列级约束:列级约束是行定义的一部分,只能够应用在一列上。 表级约束:表级约束的定义独立于列的定义,可以应用在一个表
中的多列上。 约束有六种类型:非空约束、缺省约束、检查约束、主键约束、
创建检查约束
创建主键约束 创建唯一性约束
创建外键约束
15
5.4.4 使用默认值 1. 默认值的定义 默认值是数据库对象之一,它指定在向数据库中的表插入数
据时,如果用户没有明确给出某列的值,SQL Server自动为 该列使用此默认值。 它是实现数据完整性的方法之一。在关系数据库中,每个列 都必须包含有值,即使这个值是个空值。对于不接受空值的 列,就必须为该列输入某个非空值,要么由用户明确输入, 要么由SQL Server输入默认值。 默认值可用于表中的列和用户定义数据类型。请注意,缺省 约束中使用的缺省值可以由用户创建时输入,也可以通过绑 定已创建的默认值来指定。 在创建默认值时,请考虑以下几点: 默认值需和它要绑定的列或用户定义数据类型具有相同的
默认值创建后,可以使用系统存储过程sp_helptext可 以查看用于定义一个默认值的SQL脚本。其语法是:
4
检查约束(CHECK CONSTRAINTS):限制插入列中 的值的范围。
主键约束(PRIMARY KEY CONSTRAINTS):要求主 键的列上没有两行具有相同值,也没有空值。
唯一约束(UNIQUE CONSTRAINTS):要求表中所有 行在指定的列上没有完全相同的列值。
外键约束(FROEIGN KEY CONSTRAINTS):要求正 被插入或更新的列(外键)的新值,必须在被参照表 (主表)的相应列(主键)中已经存在。
14
3. 使用企业管理器管理约束
创建缺省约束 创建缺省约束的具体步骤如下: ① 启动企业管理器。 ② 分别点击“数据库”、“JWGL”、“表”,显示数据库 JWGL中所有的表。 ③ 右击要设置缺省的表(假设要设置缺省的表为teacher), 在系统弹出的快捷菜单上点击“设计表”, ④ 点击设置缺省的列,在下面列属性设置栏的默认值输入 框中,输入对应缺省值即可。
1
1. 域完整性
域完整性是指一个列的输入有效性,是否允许空值。强制域完 整性的方法有:限制类型(通过设定列的数据类型)、格式 (通过CHECK约束和规则)或可能值的范围(通过 FOREIGN KEY 约束、CHECK 约束、DEFAULT定义、NOT NULL定义和 规则)。
2. 实体完整性
实体完整性是指保证表中所有的行唯一。实体完整性要求表中 的所有行都有一个唯一标识符。这个唯一标识符可能是一列, 也可能是几列的组合,称之为主键。也就是说,表中主键在所 有行上必须取值唯一。强制实体完整性的方法有:索引、 UNIQUE约束、PRIMARY KEY约束或 IDENTITY属性 。
11
⑸ 唯一约束 唯一约束限制表中指定列上所有的非空值必须唯一,
即表中任意两行在指定列上都不允许有相同的值。 创建UNIQUE约束时应考虑以下因素:
一个表可以放置多个UNIQUE约束 允许有空值 创建唯一索引时强制UNIQUE约束
【例4】 将数据库JWGL中teacher表的teacher_id(教师 号)字段设为唯一约束。
数据类型。 默认值需符合该列的所有规则。 默认值缺省还需符合所有CHECK约束。 创建、管理默认值可以用T-SQL语言也可以用企业管理器
16
2. 使用T-SQL语言创建默认值:
⑴ 创建默认值的语法
CREATE DEFAULT default_name AS constant_expression
⑹ 外键约束 通过外键约束强制参照完整性。SQL Server提供了外键/主
键值约束。即满足以下两点: ① 存在外键时,被参照表中这一行不能删除。 ② 向子表插入记录或更新子表中外键值的前提是,必须保
证这个外键值与主表中主键的某个值相等或者该外键值为 空,否则不允许插入或修改外键值。
13
创建FOREIGN KEY约束时应考虑以下因素: 它提供一列或多列数据的参照完整性。 FOREIGN KEY约束不自动创建索引。但如果考虑数据库的 多表连接,建议为外键创建一个索引,以提高连接性能 主键与外键的数据类型和长度必须一致,或系统可转换
这里:
default_name:新建默认值的名称,它必须遵循SQL Server标识符的命名规则。
constant_expression:默认值default_name的值, 是一个常数表达式,在这个表达式中不能含有任何列 名或其他数据库对象名,但可使用不涉及数据库对象 的SQL Server内部函数。
【例2】 为数据库JWGL中表student_course 的GRADE(成绩) 字段创建一个检查约束,使得GRADE的值在0-100之间。 USE JWGL GO ALTER TABLE student_course ADD CONSTRAINT check_grade CHECK (grade>=0 and grade<=100)
10
⑷ 主键约束 主键约束保证某一列或一组列值的组合相对于表中的每一行都是唯一的,
主键约束创建在表的主键列上,它对实现实体完整性更加有用。主键约 束的作用就是为表创建主键。 创建PRIMARY KEY约束时应考虑以下因素: 每个表只能有一个主键,并且必须有一个主键 ; 不允许有空值; 参照约束使用它作为维护参照完整性的参考点; 创建主键时,在创建主键的列上创建了一个唯一索引,可以是聚簇
【例5】为表teacher创建外键department_id,外键 department_id参考表department中的主键department_id。 USE JWGL GO ALTER TABLE teacher ADD CONSTRAINT FK_department_id FOREIGN KEY (department_id) REFERENCES department(department_id) GO
完整性约束
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关
第五章-完整性约束
第五章-完整性约束⽬录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章 完整性约束定义
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提供的自动保持数据库完整性的一种方法 。
列级约束:列级约束是行定义的一部分,只能够应用在一列上。
表级约束:表级约束的定义独立于列的定义,可以应用在一个表 中的多列上。
完整性约束的SQL定义
完整性约束的SQL定义更新数据库时,表中不能出现不符合完整性要求的记录,以保证为⽤户提供正确、有效的数据。
实现该⽬的最直接的⽅法,是在编写数据库应⽤程序时,对每个更新操作都进⾏完整性检查。
但这种检查往往是复杂、重复、低效的。
SQL把各种完整性约束作为数据库模式定义的⼀部分,由数据库管理系统维护,这样即可有效防⽌对数据库的意外破坏,提⾼了完整性检测的效率,⼜减轻了编程⼈员的负担。
SQL Server⽀持三种完整性约束:1、实体完整性2、参照完整性(或引⽤完整性)3、⽤户⾃定义完整性1、实体完整性和主码实体完整性是通过主码(PRIMARY KEY)的定义来实现的。
⼀旦某个属性或属性组被定义为主码,该主码的每个属性就不能为空值,并且在表中不能出现主码值完全相同的两个记录。
主码可以在CREATE TABLE语句中使⽤PRIMARY KEY定义。
有两种定义主码的⽅法:⼀种是在属性后增加关键字,另⼀种是在属性表中加⼊额外的定义主码的⼦句:PRIMARY KEY(主码属性名表)。
(1)属性后增加关键字定义CREATE TABLE StudentInfo(StudentID char(8) PRIMARY KEY,StudentName varchar(10),StudentSex bit);(2)加⼊额外的定义主码的⼦句CREATE TABLE StudentInfo(StudentID char(8),StudentName varchar(10),StudentSex bit,PRIMARY KEY(StudentID));如果表的主码只含有单个属性,上⾯的两种⽅法都可以使⽤。
如果主码由多个属性组成,只能使⽤第⼆种⽅法。
除了主码,SQL提供了类似候选码的说明⽅法,使⽤关键字UNIQUE定义(与候选码不同的是:定义为UNIQUE的属性可以定义为空值,但只能有⼀个记录该属性的值为NULL),说明该属性(或属性组)的值不能重复。
数据库完整性约束
数据库完整性约束原创数据库完整性约束分为三种:实体完整性约束、参照完整性约束、⽤户定义的完整性实体完整性规则:若属性(指⼀个或⼀组属性)A是基本关系R的主属性,则A不能取空值。
所谓空值就是”不知道“或”不存在“或”⽆意义“的值。
意思⼗分明显,就是关系中的主码是不能取空值的参照完整性定义:设F施基本关系R的⼀个或⼀组属性,但不是关系R的码,K S是基本关系S的主码。
如果F与K S相对应,则称F是R的外码,并称基本关系R为参照关系,基本关系S为被参照关系或⽬标关系。
规则:若属性(或属性组)F是基本关系R的外码,它与基本关系S的主码K S相对应,则对于R中每个元组在F上的值必须:或者取空值或者等于S中某个元祖的主码值⽤户定义的完整性任何关系数据库系统都应该⽀持实体完整性和参照完整性。
除此之外,不同的关系数据库系统根据其应⽤环境的不同,往往还需要⼀些特殊的约束条件。
⽤户定义的完整性就是针对某⼀具体关系数据库的约束条件,它反映某⼀具体应⽤所涉及的数据必须满⾜的语义要求。
定义实体完整性关系模型的实体完整性在CREATE TABLE中⽤PRIMARY KEY定义。
对单属性构成的码有两种说明⽅法,⼀种是定义为列级约束条件,另⼀种是定义为表级约束条件。
对多个属性构成的码只有⼀种说明⽅法,即定义为表级约束条件。
/*建⽴Student表*/create table Student(sno char(9) primary key, //在列级定义主码sname char(20) not null,ssex char(2),sage smallint,sdept char(20));/*建⽴Course表*/create table Course(cno char(9),cname char(20)primary key(cno) //在表级定义主码)实体完整性检查:检查主码值是否唯⼀,如果不唯⼀则拒绝插⼊或修改。
检查主码的各个属性是否为空,只有有⼀个为空就拒绝插⼊或修改。
第5章完整性约束定义(精)
5. 4数据完整性的概念与实施方法5.4. 1数据完整性概念■数据完整性是指数据的正确性、完备性和一致性,是衡量数据库质量好坏的重要标准。
■在用INSERT. DELETE. UPDATE语句修改数扌居库内容时, 数据的完整性可能会遭到破坏。
可能会存在下列情况: 无效的数据被添加到数据库的表中。
如:将学生考试成绩输入成负数;■SQL Server提供了对数据库中表、列实施数据完整性的方法。
对表进行设计数据完整性有两个重要内容:标识列的有效值和确定如何强制列中的数据完整性。
1.域完整性■域完整性是指一个列的输入有效性,是否允许空值。
强制域完整性的方法有:限制类型(通过设定列的数据类型)、格式(通过CHECK约束和规则)或可能值的范围(通过FOREIGN KEY约束、CHECK约束、DEFAULT定义、NOT NULL定义和规则)。
2.实体完整性■实体完整性是指保证表中所有的行唯一。
实体完整性要求表中的所有行都有一个唯一标识符。
这个唯一标识符可能是一列,也可能是几列的组合,称之为主键。
也就是说,表中主键在所有行上必须取值唯一。
强制实体完整性的方法有:索引、UNIQUE约束、PRIMARY KEY约束或IDENTITY属性。
3.参照完整性■参照完整性也叫引用完整性。
参照完整性总是保证主关键字(被引用表)和外部关键字(引用表)之间的参照关系。
它涉及两个或两个以上表数据的一致性维护。
5.4. 2 数据完整性实施方法1.声明型数据完整性■声明型数据完整性一般在对象创建时定义,由SQL Server强制实施,通常使用约束、缺省值和规则来实现。
实现基本数据完整性的首选方法是使用声明型数据完整性。
■声明型数据完整性作为数据库对象说明的一部分在语法中实现, 在CREATE TABLE和ALTER TABLE定义中使用CONSTRAINT. DEFAULT 等语句限制表中的值。
使用这种方法实现数据完整性简单且不易出错,系统直接将实现数据完整性的要求定义在表和列上。
关系数据库的完整性约束
关系数据库的完整性约束关系数据库是一种常用的数据库模型,它使用表格来存储和组织数据。
在关系数据库中,完整性约束是一种重要的机制,用于确保数据的一致性和准确性。
本文将介绍关系数据库的完整性约束的定义、类型以及它们在数据库设计和数据管理中的作用。
一、完整性约束的定义完成性约束是指定义在关系数据库表上的规则,用于保证数据的完整性。
它可以限制某些列的取值范围、规定表之间的关系、强制规则和业务规则等。
通过定义完整性约束,可以防止不一致、不准确或不符合业务规则的数据进入数据库。
二、完整性约束的类型1. 实体完整性约束实体完整性约束用于确保每一行数据在主键列上具有唯一的值,并且不为空。
主键是关系数据库中用于唯一标识每一行数据的列或列组合。
2. 引用完整性约束引用完整性约束用于确保表之间的关系的一致性。
它结合了外键和主键的概念,确保在外键列中的值必须在参照表的主键列中存在。
这样可以防止不一致的关系建立或错误的数据引用。
3. 域完整性约束域完整性约束用于限制某些列的取值范围。
可以通过定义数据类型、长度、格式等约束来确保数据的准确性和一致性。
4. 用户自定义完整性约束用户自定义完整性约束是根据特定业务需求定义的约束规则。
可以使用触发器、存储过程或触发器等数据库对象来实现自定义完整性约束。
5. 断言完整性约束断言完整性约束是在SQL标准中定义的,用于在关系数据库中表示某种条件必须成立。
断言可以在表创建时定义或随后添加,以确保数据满足特定条件。
三、完整性约束的作用1. 数据的一致性和准确性:通过完整性约束,可以限制数据的取值范围和关系,确保数据的准确性和一致性。
2. 数据的安全性:完整性约束可以防止数据被非法篡改、删除或插入不符合规定的数据。
3. 业务规则的保护:通过完整性约束,可以确保数据库中存储的数据符合特定的业务规则。
4. 避免错误的数据关联:引用完整性约束可确保外键的合法性,防止不一致的数据关联。
5. 数据的可靠性和可维护性:通过定义完整性约束,可以为数据库提供可靠的结构和规范,便于数据的管理和维护。
数据库技术中的数据完整性约束(五)
数据完整性约束是数据库技术中非常重要的一环。
它能够保证数据库中的数据准确、一致和可靠,从而确保数据库系统的正确性和可信度。
在这篇文章中,我们将探讨数据完整性约束的定义、类型以及在实际应用中的重要性。
1. 定义数据完整性约束指的是对数据库中的数据进行约束和限制,以确保数据的准确性和一致性。
通过定义和实施数据完整性约束,可以防止不符合事务要求或业务规则的数据被插入、修改或删除。
2. 类型数据完整性约束可以分为以下几种类型:实体完整性约束实体完整性约束是指对数据库中的实体对象的约束,确保每个实体具有唯一性。
例如,对于一个学生表,可以通过指定学生ID字段为主键,来保证每个学生有唯一的ID。
域完整性约束域完整性约束保证数据在一定的范围内,符合业务要求。
例如,对于学生成绩表,可以限制成绩字段的取值范围在0到100之间。
参照完整性约束参照完整性约束用于确保外键的有效性。
在关系型数据库中,可以通过引用主键来确保外键引用的表中存在对应的记录。
例如,如果有一个订单表和一个客户表,可以通过外键约束确保每个订单必须关联一个有效的客户。
用户定义完整性约束用户定义完整性约束是指根据具体业务规则定义的约束条件。
通过用户定义完整性约束,可以适应不同业务需要。
例如,对于一个邮寄地址表,可以定义一个用户定义完整性约束,确保邮政编码必须符合特定的格式。
3. 重要性数据完整性约束在数据库系统中具有重要的意义:数据准确性数据完整性约束能够确保数据的准确性。
它可以防止非法、无效或不一致的数据被插入或修改,从而保证数据的准确性和可信度。
业务规则数据完整性约束可以根据业务规则定义和实施约束条件。
通过数据完整性约束,可以确保数据库中存储的数据满足业务规则的要求,从而提高系统的可用性和可靠性。
数据一致性数据完整性约束可以保证数据库中的数据一致性。
通过定义合适的完整性约束,可以确保数据在不同的表之间保持一致,并防止数据冲突和不一致的情况发生。
保护数据安全数据完整性约束可以防止非法操作和恶意篡改数据。
MySQL中的数据完整性与约束定义
MySQL中的数据完整性与约束定义MySQL是一种常用的关系型数据库管理系统,由于其开源性和易用性,广泛应用于各个领域。
在数据库中,数据完整性是一项至关重要的概念,它确保了数据的准确性和可靠性。
本文将介绍MySQL中的数据完整性与约束定义,并着重讨论一些常见的约束定义和它们的作用。
一、数据完整性的概念和重要性数据完整性是指数据库中的数据应满足所有定义的规则,以确保数据的准确性、一致性和有效性。
数据完整性能够保证数据的完全性和可靠性,是数据库中必不可少的一项功能。
数据完整性的重要性体现在以下几个方面:1. 数据的准确性:通过定义各种约束,可以防止非法的或不符合要求的数据插入数据库中,确保数据的准确性。
2. 数据一致性:通过定义外键约束等,可以保持数据间的一致性,避免出现不一致的情况。
3. 数据有效性:通过定义检查约束等,可以限制数据的取值范围,确保数据的有效性。
4. 数据安全性:数据完整性还有助于保护数据的安全性,防止误操作或非法访问对数据造成的破坏。
二、主键约束主键约束是一个用于唯一标识表中每一行的字段或字段组合,确保表中每一行的唯一性。
在MySQL中,主键约束可以通过PRIMARY KEY关键字来定义。
主键约束的作用有:1. 确保表中的每一行都有唯一标识,方便对数据进行查询和修改。
2. 加速查询速度:主键约束在创建索引时会自动为主键字段创建索引,提高查询速度。
3. 防止重复数据的插入:当插入重复的主键值时,MySQL会报错并拒绝插入。
三、唯一约束唯一约束用于确保表中的某一列或某几列的值唯一。
在MySQL中,唯一约束可以通过UNIQUE关键字来定义。
唯一约束的作用有:1. 防止重复数据的插入:当插入重复的唯一约束值时,MySQL会报错并拒绝插入。
2. 加速查询速度:唯一约束在创建索引时会自动为唯一字段创建索引,提高查询速度。
四、外键约束外键约束用于建立两个表之间的关联关系,确保数据的引用完整性。
第5章完整性约束
第5章 数据完整性 章
5.1 数据完整性的基本概念 .
数据完整性包括实体完整性、域完整性、 数据完整性包括实体完整性、域完整性、参照完整性和 用户定义的完整性。 用户定义的完整性。 1.实体完整性(Entity Integrity) .实体完整性( ) 实体完整性用于保证数据库中数据表的每一个特定实体 都是唯一的。它可以通过主键约束( )、唯 都是唯一的。它可以通过主键约束(PRIMARY KEY)、唯 )、 一键约束( )、索引或标识属性 一键约束(UNIQUE)、索引或标识属性(IDENTITY)来 )、索引或标识属性( ) 实现。 实现。 2.域完整性 .域完整性(Domain Integrity) 域完整性就是保证数据库中的数据取值的合理性, 域完整性就是保证数据库中的数据取值的合理性,即保 证指定列的数据具有正确的数据类型、 证指定列的数据具有正确的数据类型、格式和有效的数据范 通过为表的列定义数据类型以及检查约束( 围。通过为表的列定义数据类型以及检查约束(CHECK)、 )、 默认定义(DEFAULT)、非空(NOT NULL)和规则实现 默认定义( )、非空( ) )、非空 限制数据范围,保证只有在有效范围内的值才能存储到列中。 限制数据范围,保证只有在有效范围内的值才能存储到列中。
1.利用Management Studio定义(删除)检查约束 .利用 定义( 定义 删除) 步骤1:右键要建立 约束的表选择“ 步骤 :右键要建立check约束的表选择“修改”。 约束的表选择 修改” 步骤2:在弹出的窗口中继续击右键选择“ 约束” 步骤 :在弹出的窗口中继续击右键选择“CHECK约束” 约束 步骤3:点击“添加” 名称”处设置约束的名称, 步骤 :点击“添加”,在“名称”处设置约束的名称, 表达式”中输入约束表达式( 在“表达式”中输入约束表达式(用字段名和条件运算符书 写)。 如成绩为0-100分: 成绩>=0 and 成绩<=100 如成绩为 分 成绩 成绩 步骤4:点击“关闭”,最后点击保存即可。 步骤:“表设计器”中的说明: 说明: 表设计器”中的说明: 说明 :点击“关闭” 最后点击保存即可。 a 强制用于 强制用于INSERT和UPDATE:插入和更新数据是否满 和 : 足要求。 足要求。 b 强制用于复制:复制数据是否满足要求。 强制用于复制:复制数据是否满足要求。 c 在创建或重新启用时检查现有数据:是否要求现有的数 在创建或重新启用时检查现有数据: 据满足要求。 据满足要求。
