内容正文:
7.1数据库完整性
学习要点
数据库完整性概述
SQL2005完整性实现
触发器
概述
创建、修改、查看、删除
使用
说明
AFTER触发器
INSTEAD OF触发器
数据库完整性概述
数据完整性 (Data Integrity)
定义
指数据的精确性(Accuracy)和可靠性(Reliability)
目的
应防止数据库中存在不符合语义规定的数据和防止因错误信息的输入输出造成无效操作或错误信息
分类
域完整性(Domain Integrity)
实体完整性(Entity Integrity)
参照完整性(Referential Integrity)
用户定义完整性
学习要点
完整性实现
SQL2005完整性实现
约束列表
DEFAULT约束
CHECK约束
PRIMARY KEY约束
UNIQUE约束
FOREIGN KEY约束
NOT NULL约束
RULE(规则)
列约束和表约束
学习要点
SQL2005
约束
DEFAULT约束
实质
指表中添加新行时给表中某一列指定的默认值
优点
是可以避免不允许为空值的数据错误
可以加快用户的输入速度
T-SQL方式
创建表时,设定default值
管理默认值
约束列表
创建表时,设定default值
基本语句格式
示例
【例7-1】
DEFAULT约束
DEFAULT约束
CONSTRAINT 约束名 DEFAULT 默认值
【例7-1】
在创建数据表information时,为s_sex设置DEFAULT约束,默认值为‘男’
返回
CREATE TABLE information
(
s_no CHAR(11),
s_name CHAR(8),
s_sex CHAR(2)
CONSTRAINT sex_default DEFAULT ‘男’
)
管理默认值
创建默认值
默认值的绑定、松绑、删除
DEFAULT约束
DEFAULT约束
创建默认值
基本语句格式
示例
【例7-2】 创建关于性别的默认,默认值为‘男’
管理默认值
管理默认值
CREATE DEFAULT 默认名 AS 默认值
CREATE DEFAULT sex_default AS ‘男’
默认值的绑定
基本语句格式
示例
【例7-3】将性别默认值sex_default绑定到数据表information的s_sex列上
管理默认值
管理默认值
sp_bindefault [@defname =] ‘规则名’,
[@objname =] ‘数据表名.列名’[,FUTUREONLY]
[,FUTUREONLY]:只对所创建的新列有效
sp_bindefault ‘sex_default’,
‘information.s_sex’
默认值的松绑
基本语句格式
示例
【例7-4】解除性别默认值sex_default与数据表information的s_sex列的绑定
管理默认值
管理默认值
sp_unbindefault [@objname =] ‘数据表名.列名’
sp_unbindefault ‘information.s_sex’
默认值的删除
基本语句格式
示例
【例7-5】从数据库student中删除性别默认值
sex_default
管理默认值
管理默认值
DROP DEFAULT 默认名,[,…n]
DROP RULE sex_default
约束
CHECK约束
实质
限制输入到一列或多列中的可能值
一个数据表可以定义多个CHECK约束
目的
保证SQL Server数据库中数据的域完整性
T-SQL方式
创建
约束列表
创建CHECK约束
基本语句格式
示例
【例7-6】
返回
CHECK约束
CONSTRAINT 约束名 CHECK(表达式)
【例7-6】
在创建数据表score时,为grade设置CHECK约束,使grade列的值在0~100之间
返回
CREATE TABLE score
(
s_no CHAR(11),
semester CHAR(8),
c_no VARCHAR(12),
grade decimal(5,1)
CONSTRAINT grade_check CHECK(grade>=0
AND grade<=100)
)
约束
PRIMARY KEY约束
实质
创建唯一索引保证指定列的实体完整性
列的空值属性必须定义为NOT NULL
PRIMARY KEY约束可以应用于表中一列或多列
T-SQL方式
创建