SQL Server 2012数据库应用与开发教程(第三版) 教学课件 卫 琳 主编 模块6 规则、默认和完整性约束.pdf
文本预览下载声明
模块6 规则、默认和完整性
约束
本模块的主要内容如下:
• PRIMARY KEY 约束
• FOREIGN KEY (外键)约束
• UNIQUE 约束
• CHECK约束
• DEFAULT约束
• NOT NULL约束
本章的学习目标:
• 理解数据完整性的概念和控制机制
• 掌握使用规则、默认值及约束来实现数据的完整性
任务6.1 工作场景导入
• 如何限制输入的年龄值在1~150之间?如何保证“性别”只能输入
“男”或“女” ?已知学生中女生较多,如何为“性别”列设置默认值
“女”从而减少输入数据量?
• 强制数据完整性可保证数据库中数据的质量。例如,如果输入了雇
员ID值为123的雇员,则数据库不允许其他雇员拥有同值的ID。
如果您的employee_rating列的值范围是从1至5 ,则数据库将不
接受此范围以外的值。如果表有一个存储雇员部门编号的dept_id
列,则数据库应只允许接受有效的公司部门编号的值。
• 引导问题:
• (1 )如何使用“规则”限制输入的年龄值在1~150之间?
• (2 )如何为“性别”列设置默认值“女” ,以减少输入数据量?
• (3 )如何实现强制数据完整性?
任务6.2 如何实现数据完整性
数据完整性的含义包括以下内容:
• (1 )数值的完整性,指数据类型与取值的正确性。
• (2 )表内数据不相互矛盾。
• (3 )表间数据不相互矛盾,指数据的关联性不被破坏。
任务6.2 如何实现数据完整性
按照数据完整性的功能分为4类:
• 实体完整性:要求表中每一条记录(每一行数据)是唯一的,即它必
须至少拥有一个惟一标识以区分不同的数据行。实现方法有:主键约
束PRIMARY KEY、惟一性约束UNIQUE、惟一索引UNIQUE
INDEX、标识IDENTITY等 。
任务6.2 如何实现数据完整性
• 域完整性:限定表中输入数据的数据类型与取值范围。实现方法:默
认值约束DEFAULT或默认对象、核查约束CHECK、外键约束
FOREIGN KEY、规则RULE 、数据类型、非空性约束NOT NULL等。
任务6.2 如何实现数据完整性
• 引用完整性:指对数据库进行添加、删除、修改数据时,要维护表间
数据的一致性。实现方法:外键约束FOREIGN KEY、核查约束
CHECK、触发器TRIGGER、存储过程PROCEDURE。
任务6.2 如何实现数据完整性
• 用户定义的完整性:用于实现用户特殊要求的数据规则或格式。实现
方法:默认值DEFAULT、核查约束CHECK、规则RULE 等。
任务6.3 规则对象的基本操作
• 6.3.1 创建规则对象
• 创建规则对象的基本语法格式如下:
• CREATE RULE [ schema_name . ] rule_name
• AS condition_expression
• [ ; ]
• 【例6-3】创建一个名为age_rule规则对象,该规则要求数据在
1~100之间。
• CREATE RULE age_rule
• As @age=1 and @age=100
• 【例6-4】创建一个名为sex_rule规则对象,该规则要求性别只取
“男”或“女”。
• CREATE RULE sex_rule
• As @sex in (’男’,’女’)
6.3.2 绑定规则对象
• 将创建好的规则对象绑定到某个数据表的列上,规则对象才会起约
束作用。
• 绑定规则对象的语法为:
• Exec Sp_bindrule ’规则对象名’,’表名.列名’
• 【例6-5】建立数据表“学生表”,包括“姓名”、“性别”、“年龄”字段,
要求年龄字段值在1~100。
• CREATE TABLE 学生
• ( 姓名 nvarchar(4),
• 性别 nvarchar(1),
• 年龄 tinyint)
• Exec sp_bindrule age_rule,学生表.年龄
6.3.3 验证规则对象
• 【例6-6】向学生表中插入一条记录,该学生的年龄为321。
• INSERT INTO 学生表 values(‘张
显示全部