Database System
数据库系统概论Introduction to Database Systems
主讲人:吴岩河南理工大学
第四章 数据库的完整性
知 识 点
实体完整性规则
1
参照完整性规则
2
用户定义的完整性规则
3
4.3 用户定义的完整性规则
唯一值约束
非空值约束
默认值约束
取值范围约束
4.3.1 唯一值约束
唯一值约束-含义
唯一值约束用UNIQUE 短语来实现
唯一值约束用于限制一个列的取值不重复,或者是多个列的组合取值不重复。
在一个表中可以定义多个UNIQUE 约束
可以在一个列或多个列上定义UNIQUE 约束
4.3.1 唯一值约束
创建表时定义唯一值约束-语法格式
CREATE TABLE <表名>
(…
<列名> <数据类型> UNIQUE ,…
) CREATE TABLE <表名>
( <列名> <数据类型> ,
…
[CONSTRAINT 约束名] UNIQUE(<列名>[,…n]), )
4.3.1 唯一值约束
创建表时定义唯一值约束-示例
将读者类型表中的?类型名称?列设置唯一值约束。
CREATE TABLE 读者类型
(…
类型名称 Varchar(16) UNIQUE,
…
) CREATE TABLE 读者类型(…
类型名称 Varchar(16),
…
UNIQUE(类型名称)
)
4.3.1 唯一值约束
向已建立的表中添加唯一值约束-语法格式
ALTER TABLE <表名>
ADD [CONSTRAINT 约束名] UNIQUE (<列名>[,…n])
4.3.1 唯一值约束
向已建立的表中添加唯一值约束-示例
向已经创建的读者类型表中添加名称为UN_LXMC的唯一值约束。
ALTER TABLE 读者类型
ADD CONSTRAINT UN_LXMC UNIQUE(类型名称)
4.3.2 非空值约束
非空值约束-含义
非空值约束用NOT NULL
短语实现
非空值约束用于限制一个列的取值不能为空值
在一个表中可以定义多个非空值约束
4.3.2 非空值约束
创建表时定义非空值约束-语法格式
CREATE TABLE <表名>
(…
<列名> <数据类型> NOT NULL ,
…
)
4.3.3 默认值约束
默认值约束-含义
默认值约束用DEFAULT
短语来实现
默认值约束用于提供列的默认取值。当在表中插入数据时,如果没有为有该约束的列提供值,则系统自动使用约束定义的默认值。
只在向表中插入数据时才检查
DEFAULT 约束
每个列只能有一
个默认值约束
4.3.3 默认值约束
创建表时定义默认值约束-语法格式
CREATE TABLE <表名>
(…
<列名> <数据类型> DEFAULT 常量表达式,…
)
4.3.3 默认值约束
创建表时定义默认值约束-示例
在读者表中,如果某个读者没有读者类型,则默认取值?本科生?。
CREATE TABLE 读者
(…
类型名称 Varchar (16) DEFAULT‘本科生’,
…
)
4.3.3 默认值约束
向已建立的表中添加默认值约束-语法格式
ALTER TABLE <表名>
ADD [CONSTRAINT约束名] DEFAULT 常量表达式 FOR 列名
4.3.3 默认值约束
向已建立的表中添加默认值约束-示例
向已经创建的读者表中添加名称为DF_DZLX的默认值约束,读者类型默认取值?本科生?。
ALTER TABLE 读者
ADD CONSTRAINT DF_DZLX DEFAULT ‘本科生’ For 类型名称
4.3.4 取值范围约束
取值范围约束-含义
取值范围约束用CHECK 短语实现
取值范围约束用于限制列的取值在指定范围内,使列的取值符合应用语义。
可以限制一个列的取值范围,也可以限制同一表中多个列之间的取值约束关系
在执行Insert 语句和Update 语句时系统自动检查CHECK 约束
4.3.4 取值范围约束
创建表时定义CHECK约束-语法格式
CREATE TABLE <表名>
(…
<列名> <数据类型> CHECK (逻辑表达式),…
)
4.3.4 取值范围约束
创建表时定义CHECK约束-示例
在成绩表中,定义学生成绩取值范围为0-100之间。
CREATE TABLE 成绩
(…
成绩 int CHECK(成绩>=0 and 成绩<=100),
…
)
4.3.4 取值范围约束
向已建立的表中添加CHECK约束-语法格式
ALTER TABLE <表名>
ADD [CONSTRAINT 约束名] CHECK(逻辑表达式)
●用户定义的完整性规则体现应用系统的业务规则。
●当执行插入或更新操作时,DBMS根据已经定义的完整性规则自动进行检查并进行违约处理。