SlideShare a Scribd company logo
1 of 76
第 8 章  数据完整性
本章内容 ,[object Object],[object Object],[object Object],[object Object]
8.1  数据完整性概述 ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
8.2  使用规则实施数据完整性 ,[object Object],[object Object],[object Object],[object Object]
8.2.1  创建规则 ,[object Object],[object Object],[object Object],8.2  使用规则实施数据完整性
8.2.1  创建规则 ,[object Object],[object Object],[object Object],8.2  使用规则实施数据完整性
例、创建一个数据表 employee1 ,包含 4 个字段:员工编号、员工姓名、职务、工资,要求将员工编号设置为主键,并创建一个规则 ru_salary ,将该规则绑定到表 employee 的“工资”字段上,限定该字段的值为 2000 ~ 10000. ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
1 .用企业管理器创建规则 ,[object Object],[object Object],8.2.1  创建规则
2 .用 CREATE RULE 语句创建规则 ,[object Object],[object Object],8.2.1  创建规则
[object Object],[object Object],[object Object],[object Object],[object Object],例 8-1  创建雇佣日期规则  hire_date_rule 。 8.2.1  创建规则
[object Object],[object Object],[object Object],[object Object],[object Object],例 8-3  创建评分规则 grade_rule 。 8.2.1  创建规则
[object Object],[object Object],8.2.2  查看和修改规则 8.2  使用规则实施数据完整性
[object Object],[object Object],[object Object],[object Object],2 .用系统存储过程 sp_helptext  查看规则 8.2.2  查看和修改规则
8.2.3  规则的绑定与松绑 ,[object Object],[object Object],[object Object],8.2  使用规则实施数据完整性
[object Object],[object Object],1 .用企业管理器管理规则的绑定和松绑 8.2.3  规则的绑定与松绑
[object Object],8.2.3  规则的绑定与松绑
[object Object],[object Object],[object Object],8.2.3  规则的绑定与松绑
2 .用系统存储过程 sp_bindrule 绑定规则 ,[object Object],[object Object],[object Object],[object Object],8.2.3  规则的绑定与松绑
[object Object],[object Object],[object Object],例 8-6  将例 8-1 创建的规则 hire_date_rule 绑定到 employee 表的 hire_date 列上。 8.2.3  规则的绑定与松绑
[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],例 8-7  定义用户定义数据类型 pat_char ,将例 8-4 创建的规则 my_character_rule 绑定到 pat_char 上。 8.2.3  规则的绑定与松绑
[object Object],[object Object],[object Object],例 8-8  绑定例 8-2 创建的规则 sex_rule  到 employees  表的字段 emp_sex 上。 8.2.3  规则的绑定与松绑
[object Object],[object Object],[object Object],3 .用系统存储过程 sp_unbindrule  解除规则的绑定 8.2.3  规则的绑定与松绑
例 8-9  解除例 8-6 和例 8-7 绑定在 employees 表的 hire_date 列和用户定义数据类型 pat_char 上的规则。 ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],8.2.3  规则的绑定与松绑
8.2.4  删除规则 ,[object Object],[object Object],[object Object],[object Object],[object Object],8.2  使用规则实施数据完整性
[object Object],[object Object],[object Object],[object Object],8.3  使用默认值实施数据完整性
8.3.1  创建默认值 ,[object Object],[object Object],[object Object],8.3  使用默认值实施数据完整性
8.3.1  创建默认值 ,[object Object],[object Object],8.3.1  创建默认值
2 .用 CREATE DEFAULT 语句创建默认值 ,[object Object],[object Object],[object Object],8.3.1  创建默认值
例、将上例中“工资”字段的默认值设为 “ 2000”, 名称为 de_salary ,[object Object],[object Object],[object Object]
[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],8.3.1  创建默认值
[object Object],[object Object],8.3.2  查看默认值 8.3  使用默认值实施数据完整性
[object Object],8.3.2  查看默认值
2 .用系统存储过程 sp_helptext  查看默认值 ,[object Object],[object Object],[object Object],[object Object],8.3.2  查看默认值
8.3.3  默认值的绑定与松绑 ,[object Object],[object Object],[object Object],8.3  使用默认值实施数据完整性
[object Object],8.3.3  默认值的绑定与松绑
2 .用 sp_bindefault  绑定默认值 ,[object Object],[object Object],[object Object],[object Object],8.3.3  默认值的绑定与松绑
例 8-14  绑定默认值 today_defa  到 employee 表的 hire_date 列上。 ,[object Object],[object Object],[object Object],8.3.3  默认值的绑定与松绑
3 .用 sp_unbindefault  解除默认值的绑定 ,[object Object],[object Object],[object Object],8.3.3  默认值的绑定与松绑
例 8-15  解除默认值 today_defa 与表 employee  的 hire_date  列的绑定。 ,[object Object],[object Object],[object Object],[object Object],8.3.3  默认值的绑定与松绑
8.3.4  删除默认值 ,[object Object],[object Object],[object Object],[object Object],8.3  使用默认值实施数据完整性
[object Object],[object Object],[object Object],[object Object],[object Object],8.4  使用约束实施数据完整性
8.4.1  主键约束 ,[object Object],[object Object],8.4  使用约束实施数据完整性
主键 ,[object Object],[object Object],[object Object],8.4.1  主键约束
[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],8.4.1  主键约束
例、创建项目表 project ,包含项目名称、项目编号、开始日期、项目负责人编号,设立项目编号为主键。 ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
例、将上例中的项目编号和项目名称设立为主键 ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
例 8-17  在 employee 数据库中创建 customer 表,并声明主键约束。 ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],8.4.1  主键约束
非聚集主键约束 ,[object Object],[object Object],[object Object],8.4.1  主键约束
例 8-18  创建一个产品信息表 goods ,将产品编号 goods_id 列声明为主键。 ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],8.4.1  主键约束
8.4.2  外键约束 ,[object Object],8.4  使用约束实施数据完整性
[object Object],[object Object],8.4.2  外键约束
级联操作 ,[object Object],[object Object],[object Object],8.4.2  外键约束
外键约束与主键约束相同,也分为表约束与列约束。 ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],8.4.2  外键约束
例、有员工信息表 employee 和项目表 project 如下所示: ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
例、为项目表 project 的字段“负责人编号”建立外键约束,参照员工信息表 employee 的字段“员工编号” ,[object Object],[object Object]
例 8-20  创建一个订货表 sell_order1 ,与例 8-18 创建的产品表 goods1 相关联。 ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],8.4.2  外键约束
[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],例 8-21  创建表 sell_order2 ,并为 goods_id 、 employee_id 、 custom_id 三列定义外键约束。 8.4.2  外键约束
[object Object],[object Object],[object Object],[object Object],例如,如果 employee 表的主键是由 department_id 和 employee_id 组成的复合主键,则 sell_order 表中应增加相同类型的 department_id 列定义 8.4.2  外键约束
8.4.3  惟一性约束 ,[object Object],[object Object],[object Object],[object Object],8.4  使用约束实施数据完整性
[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],8.4.3  惟一性约束
例、修改 employees 表,使字段 emp_cardid 具有惟一性 ,[object Object],[object Object],[object Object],8.4.3  惟一性约束
例、创建项目表 project ,包含项目名称、项目编号、项目负责人,设立项目编号为主键,主键约束名为 pk_pno ,为项目名称和项目负责人的字段组合设立惟一性约束,约束名为 u_pna_pm 。 ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
8.4.4  检查约束 ,[object Object],[object Object],8.4  使用约束实施数据完整性
检查约束与外键约束的区别 ,[object Object],[object Object]
定义检查约束的语法格式: ,[object Object],[object Object],[object Object],8.4.4  检查约束
例、创建一个数据表 employee2 ,包含 3 个字段:员工编号、员工姓名、工资,要求将 “员工编号”设置为主键,为字段“员工姓名”设置惟一性约束,限定“工资”字段的取值范围在 2000 ~ 5000 之间,检查约束名为 ck_sa 。 ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
例 8-24  更改表 employee2 以添加未验证检查约束。 ,[object Object],[object Object],[object Object],[object Object],[object Object],8.4.4  检查约束
例 8-25  创建一个订货表 orders ,保证各订单的订货量必须不小于 10 。 ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],8.4.4  检查约束
[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],例 8-26  创建 transporters 表并定义检查约束 8.4.4  检查约束
8.4.5  默认约束 ,[object Object],[object Object],8.4  使用约束实施数据完整性
定义默认约束的语法格式 ,[object Object],[object Object],8.4.5  默认约束
[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],8.4.5  默认约束
例 8-29  添加具有默认值的可为空的列 ,[object Object],[object Object],[object Object],[object Object],8.4.5  默认约束
例 8-30  使用默认约束。 ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],8.4.5  默认约束
例 8-31  为表 purchase_orders 定义多个约束 ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],8.4.5  默认约束
本章小结 (1) 数据完整性有 4 种类型:实体完整性、域完整性、参照完整性和用户定义的完整性。在 SQL Server 2000 中可以通过各种约束、默认、规则和触发器等数据库对象来保证数据的完整性。 (2) 规则实施数据的完整性:规则就是数据库中对存储在表的列或用户定义数据类型中的值的规定和限制。可以通过企业管理器和 Transact-SQL 语句来创建、删除、查看规则以及规则的绑定与松绑。 (3) 默认值实施数据完整性:默认值是用户输入记录时没有指定具体数据的列中自动插入的数据。默认值对象可以用于多个列或用户定义数据类型,它的管理与应用同规则有许多相似之处。表的一列或一个用户定义数据类型也只能与一个默认值相绑定。在 SQL Server 中使用企业管理器和 Transact-SQL 语句实现默认值的创建、查看、删除以及默认值的绑定与松绑。 (4) 使用约束实施数据完整性:约束是 SQL Server 提供的自动保持数据库完整性的一种方法,定义了可输入表或表的单个列中的数据的限制条件。在 SQL Server 中有 6 种约束:非空值约束、主键约束、外键约束、惟一性约束、检查约束和默认约束。

More Related Content

Viewers also liked

What does research into chess expertise tell us about education gobet
What does research into chess expertise tell us about education gobetWhat does research into chess expertise tell us about education gobet
What does research into chess expertise tell us about education gobetkcfe
 
Комаров Артём. E-chess
Комаров Артём. E-chessКомаров Артём. E-chess
Комаров Артём. E-chessVeeRoute
 
World War 2 Project by Kyle
World War 2 Project by KyleWorld War 2 Project by Kyle
World War 2 Project by Kylemslye
 
Player Motivations CISGAME 401
Player Motivations CISGAME 401Player Motivations CISGAME 401
Player Motivations CISGAME 401Chaffey College
 
World War II
World War IIWorld War II
World War IIjanay127
 

Viewers also liked (7)

What does research into chess expertise tell us about education gobet
What does research into chess expertise tell us about education gobetWhat does research into chess expertise tell us about education gobet
What does research into chess expertise tell us about education gobet
 
MARKETING 3.0
MARKETING 3.0MARKETING 3.0
MARKETING 3.0
 
Historycoolwork001
Historycoolwork001Historycoolwork001
Historycoolwork001
 
Комаров Артём. E-chess
Комаров Артём. E-chessКомаров Артём. E-chess
Комаров Артём. E-chess
 
World War 2 Project by Kyle
World War 2 Project by KyleWorld War 2 Project by Kyle
World War 2 Project by Kyle
 
Player Motivations CISGAME 401
Player Motivations CISGAME 401Player Motivations CISGAME 401
Player Motivations CISGAME 401
 
World War II
World War IIWorld War II
World War II
 

Similar to 第8章 数据完整性

第三章 关系数据库标准语言SQL.ppt this is a slide for databases
第三章 关系数据库标准语言SQL.ppt this is a slide for databases第三章 关系数据库标准语言SQL.ppt this is a slide for databases
第三章 关系数据库标准语言SQL.ppt this is a slide for databasesfzgaolanlan1
 
第8章结构体与共用体
第8章结构体与共用体第8章结构体与共用体
第8章结构体与共用体summerfeng
 
Row Set初步学习V1.1
Row Set初步学习V1.1Row Set初步学习V1.1
Row Set初步学习V1.1Zianed Hou
 
Asp.net mvc 培训
Asp.net mvc 培训Asp.net mvc 培训
Asp.net mvc 培训lotusprince
 
Hibernate查询
Hibernate查询Hibernate查询
Hibernate查询llying
 
Oracle公司内部数据库培训资料
Oracle公司内部数据库培训资料Oracle公司内部数据库培训资料
Oracle公司内部数据库培训资料yiditushe
 
第五章:Struts2标签库
第五章:Struts2标签库第五章:Struts2标签库
第五章:Struts2标签库shmily7788
 
Kid171 chap03 traditional Chinese Version
Kid171 chap03 traditional Chinese VersionKid171 chap03 traditional Chinese Version
Kid171 chap03 traditional Chinese VersionFrank S.C. Tseng
 
第9章 t sql程序设计
第9章 t sql程序设计第9章 t sql程序设计
第9章 t sql程序设计hanmo1988
 
Spring入门纲要
Spring入门纲要Spring入门纲要
Spring入门纲要yiditushe
 
软件工程 第二章
软件工程 第二章软件工程 第二章
软件工程 第二章浒 刘
 
11g新特性streams同步捕获
11g新特性streams同步捕获11g新特性streams同步捕获
11g新特性streams同步捕获maclean liu
 
组件交互模式的非主流研究
组件交互模式的非主流研究组件交互模式的非主流研究
组件交互模式的非主流研究youalab
 
基于J2 Ee 的通用Web 信息系统框架设计与实现
基于J2 Ee 的通用Web 信息系统框架设计与实现基于J2 Ee 的通用Web 信息系统框架设计与实现
基于J2 Ee 的通用Web 信息系统框架设计与实现yiditushe
 
MySQL数据库生产环境维护
MySQL数据库生产环境维护MySQL数据库生产环境维护
MySQL数据库生产环境维护mysqlops
 

Similar to 第8章 数据完整性 (20)

第三章 关系数据库标准语言SQL.ppt this is a slide for databases
第三章 关系数据库标准语言SQL.ppt this is a slide for databases第三章 关系数据库标准语言SQL.ppt this is a slide for databases
第三章 关系数据库标准语言SQL.ppt this is a slide for databases
 
第8章结构体与共用体
第8章结构体与共用体第8章结构体与共用体
第8章结构体与共用体
 
Row Set初步学习V1.1
Row Set初步学习V1.1Row Set初步学习V1.1
Row Set初步学习V1.1
 
Asp.net mvc 培训
Asp.net mvc 培训Asp.net mvc 培训
Asp.net mvc 培训
 
Hibernate查询
Hibernate查询Hibernate查询
Hibernate查询
 
Ch10
Ch10Ch10
Ch10
 
Oracle公司内部数据库培训资料
Oracle公司内部数据库培训资料Oracle公司内部数据库培训资料
Oracle公司内部数据库培训资料
 
第五章:Struts2标签库
第五章:Struts2标签库第五章:Struts2标签库
第五章:Struts2标签库
 
Kid171 chap03 traditional Chinese Version
Kid171 chap03 traditional Chinese VersionKid171 chap03 traditional Chinese Version
Kid171 chap03 traditional Chinese Version
 
Design Pattern
Design PatternDesign Pattern
Design Pattern
 
第9章 t sql程序设计
第9章 t sql程序设计第9章 t sql程序设计
第9章 t sql程序设计
 
08 指標
08 指標08 指標
08 指標
 
4
44
4
 
Spring入门纲要
Spring入门纲要Spring入门纲要
Spring入门纲要
 
软件工程 第二章
软件工程 第二章软件工程 第二章
软件工程 第二章
 
11g新特性streams同步捕获
11g新特性streams同步捕获11g新特性streams同步捕获
11g新特性streams同步捕获
 
组件交互模式的非主流研究
组件交互模式的非主流研究组件交互模式的非主流研究
组件交互模式的非主流研究
 
SCJP ch08
SCJP ch08SCJP ch08
SCJP ch08
 
基于J2 Ee 的通用Web 信息系统框架设计与实现
基于J2 Ee 的通用Web 信息系统框架设计与实现基于J2 Ee 的通用Web 信息系统框架设计与实现
基于J2 Ee 的通用Web 信息系统框架设计与实现
 
MySQL数据库生产环境维护
MySQL数据库生产环境维护MySQL数据库生产环境维护
MySQL数据库生产环境维护
 

More from hanmo1988

第11章 数据库的安全管理
第11章   数据库的安全管理第11章   数据库的安全管理
第11章 数据库的安全管理hanmo1988
 
第10章 存储过程与触发器
第10章 存储过程与触发器第10章 存储过程与触发器
第10章 存储过程与触发器hanmo1988
 
第10章 (续)事务
第10章 (续)事务 第10章 (续)事务
第10章 (续)事务 hanmo1988
 
第7章 索引和视图
第7章 索引和视图第7章 索引和视图
第7章 索引和视图hanmo1988
 
第6章 数据查询
第6章 数据查询第6章 数据查询
第6章 数据查询hanmo1988
 
第5章 sql server表的管理
第5章 sql server表的管理第5章 sql server表的管理
第5章 sql server表的管理hanmo1988
 
第4章 sql server数据库的管理
第4章   sql server数据库的管理第4章   sql server数据库的管理
第4章 sql server数据库的管理hanmo1988
 
第3章 sql server 简介
第3章   sql server 简介第3章   sql server 简介
第3章 sql server 简介hanmo1988
 
第2章 关系数据库基本原理
第2章  关系数据库基本原理第2章  关系数据库基本原理
第2章 关系数据库基本原理hanmo1988
 
第1章 数据库系统概论
第1章   数据库系统概论第1章   数据库系统概论
第1章 数据库系统概论hanmo1988
 

More from hanmo1988 (11)

第11章
第11章 第11章
第11章
 
第11章 数据库的安全管理
第11章   数据库的安全管理第11章   数据库的安全管理
第11章 数据库的安全管理
 
第10章 存储过程与触发器
第10章 存储过程与触发器第10章 存储过程与触发器
第10章 存储过程与触发器
 
第10章 (续)事务
第10章 (续)事务 第10章 (续)事务
第10章 (续)事务
 
第7章 索引和视图
第7章 索引和视图第7章 索引和视图
第7章 索引和视图
 
第6章 数据查询
第6章 数据查询第6章 数据查询
第6章 数据查询
 
第5章 sql server表的管理
第5章 sql server表的管理第5章 sql server表的管理
第5章 sql server表的管理
 
第4章 sql server数据库的管理
第4章   sql server数据库的管理第4章   sql server数据库的管理
第4章 sql server数据库的管理
 
第3章 sql server 简介
第3章   sql server 简介第3章   sql server 简介
第3章 sql server 简介
 
第2章 关系数据库基本原理
第2章  关系数据库基本原理第2章  关系数据库基本原理
第2章 关系数据库基本原理
 
第1章 数据库系统概论
第1章   数据库系统概论第1章   数据库系统概论
第1章 数据库系统概论
 

第8章 数据完整性

  • 1. 第 8 章 数据完整性
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.
  • 26.
  • 27.
  • 28.
  • 29.
  • 30.
  • 31.
  • 32.
  • 33.
  • 34.
  • 35.
  • 36.
  • 37.
  • 38.
  • 39.
  • 40.
  • 41.
  • 42.
  • 43.
  • 44.
  • 45.
  • 46.
  • 47.
  • 48.
  • 49.
  • 50.
  • 51.
  • 52.
  • 53.
  • 54.
  • 55.
  • 56.
  • 57.
  • 58.
  • 59.
  • 60.
  • 61.
  • 62.
  • 63.
  • 64.
  • 65.
  • 66.
  • 67.
  • 68.
  • 69.
  • 70.
  • 71.
  • 72.
  • 73.
  • 74.
  • 75.
  • 76. 本章小结 (1) 数据完整性有 4 种类型:实体完整性、域完整性、参照完整性和用户定义的完整性。在 SQL Server 2000 中可以通过各种约束、默认、规则和触发器等数据库对象来保证数据的完整性。 (2) 规则实施数据的完整性:规则就是数据库中对存储在表的列或用户定义数据类型中的值的规定和限制。可以通过企业管理器和 Transact-SQL 语句来创建、删除、查看规则以及规则的绑定与松绑。 (3) 默认值实施数据完整性:默认值是用户输入记录时没有指定具体数据的列中自动插入的数据。默认值对象可以用于多个列或用户定义数据类型,它的管理与应用同规则有许多相似之处。表的一列或一个用户定义数据类型也只能与一个默认值相绑定。在 SQL Server 中使用企业管理器和 Transact-SQL 语句实现默认值的创建、查看、删除以及默认值的绑定与松绑。 (4) 使用约束实施数据完整性:约束是 SQL Server 提供的自动保持数据库完整性的一种方法,定义了可输入表或表的单个列中的数据的限制条件。在 SQL Server 中有 6 种约束:非空值约束、主键约束、外键约束、惟一性约束、检查约束和默认约束。