第10章SQL语言高级功能 本章概迷 本章的学习目标 至要内容 数据库系统原理与应用教程(第二版) 第10章SQL语言高级功能 第1页
数据库系统原理与应用教程(第二版) 第10章 SQL语言高级功能 第1页 第10章 SQL语言高级功能 本章概述 本章的学习目标 主要内容
本章概述 ●任何一种优秀产品都有这样一种特点,它不但具备了所有 此类产品的基本功能,而且还具备了其他产品所没有的特 点。就是这种独特的个性,使得这种优秀产品美名远扬。 作为一种数据库语言,SQL语言也同此理。 ●第9章介绍了SQL语言的基本特征,这是所有数据库语言 都可以提供的基本操作,但是仅凭这些特征,SQL语言还 无法在数据库查询语言领域居于主导地位 本章将要介绍SQL语言所拥有的约束、触发器等高级功能, 正是这些强大的功能和它的灵活性,使得SQL语言具有其 他数据库语言无法比拟的,也是SQL语言垄断数据库查询 语言的重要因素。 数据库系统原理与应用教程(第二版) 第10章SQL语言高级功能 第2页
数据库系统原理与应用教程(第二版) 第10章 SQL语言高级功能 第2页 本章概述 ⚫ 任何一种优秀产品都有这样一种特点,它不但具备了所有 此类产品的基本功能,而且还具备了其他产品所没有的特 点。就是这种独特的个性,使得这种优秀产品美名远扬。 作为一种数据库语言,SQL语言也同此理。 ⚫ 第9章介绍了SQL语言的基本特征,这是所有数据库语言 都可以提供的基本操作,但是仅凭这些特征,SQL语言还 无法在数据库查询语言领域居于主导地位。 ⚫ 本章将要介绍SQL语言所拥有的约束、触发器等高级功能, 正是这些强大的功能和它的灵活性,使得SQL语言具有其 他数据库语言无法比拟的,也是SQL语言垄断数据库查询 语言的重要因素
本章的学习目标 ●理解SQL语言的特征; ●了解和掌握约束的概念、作用和定义方法 了解和掌握触发器的作用和定义方式; ●了解和掌握游标的概念和定义过程技术; ●理解嵌入式SQL语言的基本概念; ●了解SQL安全控制和用户授权语句的概念 和特点。 数据库系统原理与应用教程(第二版) 第10章SQL语言高级功能 第3页
数据库系统原理与应用教程(第二版) 第10章 SQL语言高级功能 第3页 本章的学习目标 ⚫ 理解SQL语言的特征; ⚫ 了解和掌握约束的概念、作用和定义方法; ⚫ 了解和掌握触发器的作用和定义方式; ⚫ 了解和掌握游标的概念和定义过程技术; ⚫ 理解嵌入式SQL语言的基本概念; ⚫ 了解SQL安全控制和用户授权语句的概念 和特点
主要内容 101约束 102触发器 103游标 104嵌入式SQL语言 105安全控制和权限管理 10.6动手练习 107本章小结 数据库系统原理与应用教程(第二版) 第10章SQL语言高级功能 第4页
数据库系统原理与应用教程(第二版) 第10章 SQL语言高级功能 第4页 主要内容 10.1 约束 10.2 触发器 10.3 游标 10.4 嵌入式SQL语言 10.5 安全控制和权限管理 10.6 动手练习 10.7 本章小结
10.1约束 ●在建立数据库模式时,我们强调了需要为 数据库约束建立模式,因为这些约束也是 数据库模式的一部分。 ●同样,在定义关系模式时,也需要定义许 多约束形式,这些约束包括键码约束、外 键码约束、非空约束、 CHECK约束和断言 约束。定义这些约束形式,可以大大提高 关系(表)中数据的质量 数据库系统原理与应用教程(第二版) 第10章SQL语言高级功能 第5页
数据库系统原理与应用教程(第二版) 第10章 SQL语言高级功能 第5页 10.1 约束 ⚫ 在建立数据库模式时,我们强调了需要为 数据库约束建立模式,因为这些约束也是 数据库模式的一部分。 ⚫ 同样,在定义关系模式时,也需要定义许 多约束形式,这些约束包括键码约束、外 键码约束、非空约束、CHECK约束和断言 约束。定义这些约束形式,可以大大提高 关系(表)中数据的质量
键码约束 ●在数据库建模中,最重要的约束类型是声明某个属性或属 性集是关系(表)的键码。键码的含义就是禁止关系中的两 个元组在组成键码的属性上取值一致。 根据键码的作用不同,可以把键码划分成主键码和候选键 码两种类型。主键码使用关键字 PRIMARY KEY说明,而 候选键码的说明使用关键字 UNIQUE。两种键码的主要区 别在于前者的键码属性不允许空值,一个表中最多有一个 主键码,而后者的键码属性允许空值,且一个表中可以有 多个候选键码。当然,这两种键码都不允许出现键码属性 取值相同的两个或两个以上的元组同时存在 数据库系统原理与应用教程(第二版) 第10章SQL语言高级功能 第6页
数据库系统原理与应用教程(第二版) 第10章 SQL语言高级功能 第6页 键码约束 ⚫ 在数据库建模中,最重要的约束类型是声明某个属性或属 性集是关系(表)的键码。键码的含义就是禁止关系中的两 个元组在组成键码的属性上取值一致。 ⚫ 根据键码的作用不同,可以把键码划分成主键码和候选键 码两种类型。主键码使用关键字PRIMARY KEY说明,而 候选键码的说明使用关键字UNIQUE。两种键码的主要区 别在于前者的键码属性不允许空值,一个表中最多有一个 主键码,而后者的键码属性允许空值,且一个表中可以有 多个候选键码。当然,这两种键码都不允许出现键码属性 取值相同的两个或两个以上的元组同时存在
外键码约束 ●数据库中存储的数据是客观现实的实体和实体之 间的联系。也就是说,存储的信息包括实体本身 的信息和实体之间联系的信息。前面讲过的内容 基本上都是用来说明如何处理实体本身的信息 现在我们将要介绍如何存储实体之间的联荼信息。 外键码约束就是实现实体之间联系信息存储的方 式,也是数据库中非常重要的一种约束。外键码 约束实现了两个关系之间属性互相依赖存在的意 义。如果把一个关系的属性或属性集定义为外键 码,那么它会参照另一个关系(或 关系)的 某一个或多个属性。 数据库系统原理与应用教程(第二版) 第10章SQL语言高级功能 第7页
数据库系统原理与应用教程(第二版) 第10章 SQL语言高级功能 第7页 外键码约束 ⚫ 数据库中存储的数据是客观现实的实体和实体之 间的联系。也就是说,存储的信息包括实体本身 的信息和实体之间联系的信息。前面讲过的内容 基本上都是用来说明如何处理实体本身的信息, 现在我们将要介绍如何存储实体之间的联系信息。 ⚫ 外键码约束就是实现实体之间联系信息存储的方 式,也是数据库中非常重要的一种约束。外键码 约束实现了两个关系之间属性互相依赖存在的意 义。如果把一个关系的属性或属性集定义为外键 码,那么它会参照另一个关系(或同一个关系)的 某一个或多个属性
非空约束 最简单的一种约束是非空约束,这种约束使用关 键字 NOT NULL说明。该约束的效果就是不接受 该属性为空的元组。该约束的定义也是在 CREATE TABLE语句中的属性的数据类型后面说 明 ●例如,图10-5就是一个使用了非空约束定义的 CREATE TABLE语句。在这里,除了第(4)行的 属性之外,都包含了非空约束,只是第(4)行属性 pageNumber的约束定义为可空约束 数据库系统原理与应用教程(第二版) 第10章SQL语言高级功能 第8页
数据库系统原理与应用教程(第二版) 第10章 SQL语言高级功能 第8页 非空约束 ⚫ 最简单的一种约束是非空约束,这种约束使用关 键字NOT NULL说明。该约束的效果就是不接受 该属性为空的元组。该约束的定义也是在 CREATE TABLE语句中的属性的数据类型后面说 明。 ⚫ 例如,图10-5就是一个使用了非空约束定义的 CREATE TABLE语句。在这里,除了第(4)行的 属性之外,都包含了非空约束,只是第(4)行属性 pageNumber的约束定义为可空约束
CHECK约束 在数据库中,经常需要提供一些措施保证数据满足复杂的 要求。例如,要求在关系 Author中,插入的作者性别要 么是“男”,要么是“女”,而不能是其他数据。在关系 Book中,要求插入的图书价格大于25元值是小于168元 且不能等于50元和100元。这些约束都是用户可能会碰到 曾細果不熊堡該些約的蛮现x那数据库中的数擂 用 CHECK约束来实现这种复杂的约束要求。 CHECK约束就是用来指定某一个或多个属性可以满足的 条件。当关系中的某个属性定义一个 CHECK约束后,所 有的元组插入就需要检查是否满足这种 CHECK约束要求。 只有濾足这种约束的数据才能执行成功,否则就被系统拒 数据库系统原理与应用教程(第二版) 第10章SQL语言高级功能 第9页
数据库系统原理与应用教程(第二版) 第10章 SQL语言高级功能 第9页 CHECK约束 ⚫ 在数据库中,经常需要提供一些措施保证数据满足复杂的 要求。例如,要求在关系Author中,插入的作者性别要 么是“男”,要么是“女”,而不能是其他数据。在关系 Book中,要求插入的图书价格大于2.5元但是小于168元 且不能等于50元和100元。这些约束都是用户可能会碰到 的。如果不能保证这些约束的实现,那么数据库中的数据 质量就无法得到保障。幸运的是,在SQL语言中,可以使 用CHECK约束来实现这种复杂的约束要求。 ⚫ CHECK约束就是用来指定某一个或多个属性可以满足的 条件。当关系中的某个属性定义一个CHECK约束后,所 有的元组插入就需要检查是否满足这种CHECK约束要求。 只有满足这种约束的数据才能执行成功,否则就被系统拒 绝执行
断言约束 ●前面讲述的约束虽然功能非常强大,但是都局限在一个关 系模式中,如果希望在多个关系之间保持数据的一致性, 那么这些约束就无能为力了。但是,SQL语言又提供了 个可以保证关系之间数据完整的约束,这种约束称为断言 ASSERTION。 就像许多其他数据库对象一样,断言约束也可以使用 CREATE ASSERTION语句来定义。 CREATE ASSERTION语句的基本元素包括关键字 CREATE ASSERTION、断言名称、关键字 CHECK和使用括号括 起来的条件。具体的 CREATEASSERTION语句的语法形 式如图10-9所示。 数据库系统原理与应用教程(第二版) 第10章SQL语言高级功能 第10页
数据库系统原理与应用教程(第二版) 第10章 SQL语言高级功能 第10页 断言约束 ⚫ 前面讲述的约束虽然功能非常强大,但是都局限在一个关 系模式中,如果希望在多个关系之间保持数据的一致性, 那么这些约束就无能为力了。但是,SQL语言又提供了一 个可以保证关系之间数据完整的约束,这种约束称为断言 ASSERTION。 ⚫ 就像许多其他数据库对象一样,断言约束也可以使用 CREATE ASSERTION语句来定义。CREATE ASSERTION语句的基本元素包括关键字CREATE ASSERTION、断言名称、关键字CHECK和使用括号括 起来的条件。具体的CREATE ASSERTION语句的语法形 式如图10-9所示