数据库系统概论复习资料王珊版_第1页
数据库系统概论复习资料王珊版_第2页
数据库系统概论复习资料王珊版_第3页
数据库系统概论复习资料王珊版_第4页
数据库系统概论复习资料王珊版_第5页
已阅读5页,还剩36页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、数据库系统概论笔记数据 (Data) :是数据库中存储的基本对象数据的定义: 描述事物的符号记录数据的种类: 文字、图形、图象、声音等数据的特点: 数据与其语义是不可分的数据库 (Database, 简称 DB) :是长期储存在计算机内、有组织的、可共享的大量数据集合 数据库的特征:数据按一定的数据模型组织、描述和储存可为各种用户共享冗余度较小数据独立性较高易扩展数据库管理系统 ( Database Management System ,简称 DBMS ): 是位于用户与操作系统之间的一层数据管理软件。DBMS 的用途 :科学地组织和存储数据、高效地获取和维护数据DBMS 的主要功能 :数据库

2、的运行管理保证数据的安全性、完整性、多用户对数据的并发使用发生故障后的系统恢复 数据库的建立和维护功能 (实用程序 ) 数据库数据批量装载数据库转储介质故障恢复数据库的重组织性能监视等数据库系统( Database System ,简称 DBS )是指在计算机系统中引入数据库后的系统构成。数据库系统的构成 由数据库、数据库管理系统(及其开发工具)、应用系统、数据库管理员(和用户)构成。数据管理 对数据进行分类、组织、编码、存储、检索和维护,是数据处理的中心问题 数据模型这个工具来 抽象、表示和处理 现实世界中的数据和信息。数据模型应满足三方面要求能比较真实地模拟现实世界容易为人所理解 便于在计

3、算机上实现 数据模型分成两个不同的层次(1)概念模型 也称信息模型,它是按用户的观点来对数据和信息建模。(2)数据模型 主要包括网状模型、层次模型、关系模型等,它是按计算机系统的观点对数据建模 。 客观对象的抽象过程 - 两步抽象现实世界中的客观对象抽象为概念模型; 把概念模型转换为某一 DBMS 支持的数据模型。数据结构对象类型的集合数据结构是对系统静态特性的描述两类对象与数据类型、内容、性质有关的对象与数据之间联系有关的对象数据操作 对数据库中各种对象(型)的实例(值)允许执行的操作及有关的操作规则数据操作的类型 检索 更新(包括插入、删除、修改)数据模型对操作的定义 操作的确切含义 操作

4、符号 操作规则(如优先级) 实现操作的语言数据操作是对系统动态特性的描述。 数据模型对约束条件的定义反映和规定本数据模型必须遵守的基本的通用的完整性约束条件。 提供定义完整性约束条件的机制,以反映具体应用所涉及的数据必须遵守的特定的语义约束条件 。信息世界中的基本概念(1) 实体( Entity ) 客观存在并可相互区别的事物称为实体。(2) 属性( Attribute ) 实体所具有的某一特性称为属性。 一个实体可以由若干个属性来刻画。(3)码( Key ) 唯一标识实体的属性集称为码。(4)域( Domain ) 属性的取值范围称为该属性的域 。(5)实体型( Entity Type )

5、用实体名及其属性名集合来抽象和刻画 同类实体称为实体型(6)实体集( Entity Set ) 同型实体的集合称为实体集 联系( Relationship ) 现实世界中事物内部以及事物之间的联系在信息世界 中反映为实体内部的联系和实体之间的联系 实体型间联系 两个实体型一对一联系( 1:1 )三个实体型一对多联系( 1:n )一个实体型 多对多联系( m:n ) 两个实体型间的联系 一对一联系如果对于实体集 A 中的每一个实体,实体集 B 中至多有一个实体与之联系,反之亦然,则称实体集 A 与实体集 B 具有一对一联系。记为 1:1 。一对多联系如果对于实体集 A 中的每一个实体,实体集 B

6、 中有 n 个实体( n 0)与之联系,反之,对于实体集 B 中的每一个实体,实体集 A 中至多只有一个实体与之联系,则称实体集 A 与实体集 B 有一对多联 系记为 1:n多对多联系( m:n)反之,对于实体集A 与实体 B 具有多如果对于实体集 A 中的每一个实体,实体集 B 中有 n 个实体( n 0)与之联系, B 中的每一个实体,实体集 A 中也有 m 个实体( m 0)与之联系,则称实体集 对多联系。记为 m:n概念模型的表示方法实体联系方法 (E-R 方法 )用 E-R 图来描述现实世界的概念模型 E-R 方法也称为 E-R 模型常用数据模型非关系模型层次模型( Hierarch

7、ical Model ) 网状模型 (Network Model ) 数据结构:以基本层次联系为基本单位 基本层次联系:两个记录以及它们之间的一对多(包括一对一)的联系关系模型 (Relational Model)数据结构:表面向对象模型 (Object Oriented Model )数据结构:对象层次模型满足下面两个条件的基本层次联系的集合为层次模型。1.有且只有一个结点没有双亲结点,这个结点称为根结点2.根以外的其它结点有且只有一个双亲结点表示方法实体型:用记录类型描述。 每个结点表示一个记录类型。属性:用字段描述。每个记录类型可包含若干个字段。 联系:用结点之间的连线表示记录(类)型之

8、间的一对多的联系网状数据模型的数据结构网状模型满足下面两个条件的基本层次联系的集合为网状模型。1. 允许一个以上的结点无双亲;2. 一个结点可以有多于一个的双亲 。 表示方法(与层次数据模型相同)实体型:用记录类型描述。每个结点表示一个记录类型。属性:用字段描述。每个记录类型可包含若干个字段。联系:用结点之间的连线表示记录(类)型之间的一对多的父子联系。关系模型的基本概念关系( Relation )一个关系对应通常说的一张表。元组( Tuple )表中的一行即为一个元组。属性( Attribute ) 表中的一列即为一个属性,给每一个属性起一个名称即属性名。关系必须是规范化的,满足一定的规范条

9、件最基本的规范条件:关系的每一个分量必须是一个不 可分的数据项。查询、插入、删除、更新 数据操作是集合操作,操作对象和操作结果都是关系,即若干元组的集合 存取路径对用户隐蔽,用户只要指出 “干什么 ”,不必详细说明 “怎么干 ” 关系模型的完整性约束实体完整性参照完整性用户定义的完整性 关系数据模型的存储结构表以文件形式存储有的 DBMS 一个表对应一个操作系统文件有的 DBMS 自己设计文件结构 关系模型的优缺点优点 建立在严格的数学概念的基础上 概念单一。数据结构简单、清晰,用户易懂易用 实体和各类联系都用关系来表示。 对数据的检索结果也是关系。关系模型的存取路径对用户透明 具有更高的数据

10、独立性,更好的安全保密性 简化了程序员的工作和数据库开发建立的工作缺点 存取路径对用户透明导致查询效率往往不如非 关系数据模型 为提高性能,必须对用户的查询请求进行优化 增加了开发数据库管理系统的难度 数据库系统外部的体系结构单用户结构主从式结构分布式结构客户 /服务器结构浏览器 /应用服务器 /数据库服务器结构 分布式结构的数据库系统数据库中的数据在逻辑上是一个整体,但物理地分布在计算机网络的不同结点上。 网络中的每个结点都可以独立处理本地数据库中的数据,执行局部应用 同时也可以同时存取和处理多个异地数据库中的数据,执行全局应用 优点适应了地理上分散的公司、团体和组织对于数据库应用的需求。缺

11、点数据的分布存放给数据的处理、管理与维护带来困难。 当用户需要经常访问远程数据时,系统效率会明显地受到网络传输的制约 数据库管理员 (DBA)决定数据库中的信息内容和结构 决定数据库的存储结构和存取策略 定义数据的安全性要求和完整性约束条件 关系数据库关系模型的组成关系数据结构关系操作集合关系完整性约束1)常用的关系操作查询选择、投影、连接、除、并、交、差数据更新插入、删除、修改查询的表达能力是其中最主要的部分2)关系操作的特点 集合操作方式,即操作的对象和结果都是集合。非关系数据模型的数据操作方式:一次一记录文件系统的数据操作方式3)关系数据语言的种类关系代数语言用对关系的运算来表达查询要求

12、4)关系数据语言的特点关系语言是一种高度非过程化的语言存取路径的选择由 DBMS 的优化机制来完成用户不必用循环结构就可以完成数据操作能够嵌入高级语言中使用关系代数、元组关系演算和域关系演算三种语言在表达能力上完全等价关系 域( Domain )2.笛卡尔积( Cartesian Product )3.关系( Relation )域是一组具有相同数据类型的值的集合。例 :整数实数介于某个取值范围的整数长度指定长度的字符串集合 男, 女介于某个取值范围的日期笛卡尔积给定一组域 D1,D2, Dn,这些域中可以有相同的。 D1,D2,Dn 的笛卡尔积为:D1 D2Dn( d1,d2,dn) di

13、Di ,i 1,2,n所有域的所有取值的一个组合不能重复2)元组( Tuple )笛卡尔积中每一个元素( d 1, d 2, , dn)叫作一个 n元组( n-tuple )或简称元组。3)分量( Component )笛卡尔积元素( d1, d2, , dn)中的每一个值 di 叫作一个分量。4)基数( Cardinal number )若 Di(i1,2,n)为有限集,其基数为 mi(i1,2, ,n),则 D1D2Dn 的基数 M 为:5)笛卡尔积的表示方法 笛卡尔积可表示为一个二维表。表中的每行对应一个元组,表中的每列对应一个域。关系( Relation )Attribute )1)关

14、系D1D2Dn 的子集叫作在域 D1,D2,Dn 上的关系,表示为 R(D1,D2,Dn )R:关系名 n:关系的目或度( Degree)2)元组 关系中的每个元素是关系中的元组,通常用 t 表示。3)单元关系与二元关系当 n=1 时,称该关系为单元关系( Unary relation )。当 n=2 时,称该关系为二元关系( Binary relation )4)关系的表示 关系也是一个二维表,表的每行对应一个元组,表的每列对应一个域。5)属性 关系中不同列可以对应相同的域,为了加以区分,必须对每列起一个名字,称为属性( n 目关系必有 n 个属性。6)码 候选码( Candidate ke

15、y ) 若关系中的某一属性组的值能唯一地标识 一个元组,则称该属性组为候选码 在最简单的情况下,候选码只包含一个属性。称为全码( All-key ) 在最极端的情况下,关系模式的所有属性组 是这个关系模式的候选码,称为全码( Allkey) 主码若一个关系有多个候选码,则选定其中一个 为主码( Primary key ) 主码的诸属性称为主属性( Prime attribute )。 不包含在任何侯选码中的属性称为非码属性 ( Non-key attribute )7)三类关系 基本关系(基本表或基表) 实际存在的表,是实际存储数据的逻辑表示 查询表查询结果对应的表视图表由基本表或其他视图表导

16、出的表,是虚表,不对 应实际存储的数据基本关系的性质 列是同质的( Homogeneous ) 每一列中的分量是同一类型的数据,来自同 一个域 不同的列可出自同一个域 其中的每一列称为一个属性 不同的属性要给予不同的属性名 列的顺序无所谓 列的次序可以任意交换 遵循这一性质的数据库产品 ( 如 ORACLE) ,增加新属性时,永远是插至最后一列 但也有许多关系数据库产品没有遵循这一 性质,例如 FoxPro 仍然区分了属性顺序 任意两个元组不能完全相同 由笛卡尔积的性质决定 但许多关系数据库产品没有遵循这一性质。 例如 :Oracle , FoxPro 等都允许关系表中存在两个完全相同 的元组

17、,除非用户特别定义了相应的约束条件。 行的顺序无所谓 行的次序可以任意交换 遵循这一性质的数据库产品 ( 如 ORACLE) , 插入一个元组时永远插至最后一行 但也有许多关系数据库产品没有遵循这一性 质,例如 FoxPro 仍然区分了元组的顺序 分量必须取原子值 每一个分量都必须是不可分的数据项。 这是规范条件中最基本的一条 关系模式( Relation Schema )是型 关系是值关系模式是对关系的描述 元组集合的结构 属性构成 属性来自的域属性与域之间的映象关系 元组语义以及完整性约束条件 属性间的数据依赖关系集合 定义关系模式关系模式可以形式化地表示为:R(U,D,dom,F)R关系

18、名U组成该关系的属性名集合D属性组 U 中属性所来自的域dom 属性向域的映象集合F 属性间的数据依赖关系集合 关系模式通常可以简记为R (U) 或R (A1,A2,An)R 关系名A1,A2, ,An属性名注:域名及属性向域的映象常常直接说明为属性的类型、长度关系模式对关系的描述 静态的、稳定的 关系关系模式在某一时刻的状态或内容 动态的、随时间不断变化的 关系模式和关系往往统称为关系通过上下文加以区别1.关系数据库 在一个给定的应用领域中,所有实体及实 体之间联系的关系的集合构成一个关系数 据库。2.关系数据库的型与值 关系数据库也有型和值之分 关系数据库的型称为关系数据库模式,是对关系数

19、据库的描述 若干域的定义 在这些域上定义的若干关系模式 关系数据库的值是这些关系模式在某一时刻对应的关系的集合,通常简称为关系数据库3 关系的完整性 关系模型的完整性规则是对关系的某种约束条件。关系模型中三类完整性约束:实体完整性参照完整性用户定义的完整性实体完整性和参照完整性是关系模型必须满足的完整性约束条件,被称作是关系的两个 不变性 ,应该由关系系统自动 支持。实体完整性实体完整性规则( Entity Integrity )若属性 A 是基本关系 R 的主属性,则属性A 不能取空值关系模型必须遵守实体完整性规则的原因(1)实体完整性规则是针对基本关系而言的。一个基本表通常对应现实世界的一

20、个实体集或多对多联系。(2)现实世界中的实体和实体间的联系都是可区分的,即它们具有某种唯一性标识。(3)相应地,关系模型中以主码作为唯一性标识。 关系模型必须遵守实体完整性规则的原因(续 )(4)主码中的属性即主属性不能取空值。空值就是 “不知道 ”或 “无意义 ”的值。主属性取空值,就说明存在某个不可标识的实体,即存在不可区分的实体,这与第( 2)点相矛盾,因此这个规则称为实体完整性。实体完整性规则规定基本关系的所有 主属性都不能取空值参照完整性1.关系间的引用2.外码3.参照完整性规则1.关系间的引用 在关系模型中实体及实体间的联系都是用 关系来描述的,因此可能存在着关系与关 系间的引用。

21、2 外码( Foreign Key )设 F 是基本关系 R 的一个或一组属性,但不 是关系 R的码。如果 F 与基本关系 S的主码 Ks 相对应,则称 F 是基本关系 R 的外码 基本关系 R 称为参照关系( Referencing集合并比较大于运算-差运算大于等于符交符,或 ) X1 ,Y1 等:属性名、常量、简单函数;属性名也可以用它的序号来代替; :逻辑运算符(或) :表示任选项 :表示上述格式可以重复下去3)选择运算是从行的角度进行的运算2.投影( Projection )1)投影运算符的含义从 R 中选择出若干属性列组成新的关系A(R) = tA | t R A:R 中的属性列2)

22、投影操作主要是从列的角度进行运算 但投影之后不仅取消了原关系中的某些列,而且还可能取消某些元组(避免重复行)3.连接( Join )1)连接也称为连接2)连接运算的含义 从两个关系的笛卡尔积中选取属性间满足一定条件的元组RS = | tr Rts StrAtsB A和 B:分别为 R和 S上度数相等且可比的属性组 :比较运算符 ?连接运算从 R和 S的广义笛卡尔积 R S中选取( R关系)在 A 属性组上的值与( S关系)在 B 属 性组上值满足比较关系的元组。3)两类常用连接运算等值连接( equijoin )什么是等值连接为 “”的连接运算称为等值连接 等值连接的含义从关系 R 与 S的广

23、义笛卡尔积中选取 A、 B 属性值相等的那些元组,即等值连接为: R S = | tr Rts StrA = tsB 4)一般的连接操作是从行的角度进行运算。 自然连接还需要取消重复列,所以是同时从行和列的角度进行运算。4)象集 Z给定一个关系 R(X,Z), X和 Z为属性组。当 tX=x时,x在 R中的象集( Images Set)为:Zx= tZ|t R, tX= x它表示 R 中属性组 X 上值为 x 的诸元组在 Z 上分量的集合。4.除( Division )给定关系 R (X,Y) 和 S (Y,Z),其中 X,Y,Z 为属性组。R 中的 Y 与 S 中的 Y 可以有不同的属性名,

24、但必须出自相同 的域集。 R与 S的除运算得到一个新的关系P(X),P 是 R中满足下列条件的元组在 X 属性列上的投影:元组在 X 上分 量值 x的象集 Yx包含 S在 Y上投影的集合。RS = tr X | tr RY (S) Yx Yx:x 在 R 中的象集, x = trX 2)除操作是同时从行和列角度进行运算 第三章 关系数据库标准语言 SQL3.1 SQL 概述SQL 的特点1. 综合统一2. 高度非过程化3.面向集合的操作方式4.以同一种语法结构提供两种使用方法5.语言简洁,易学易用5.语言简捷,易学易用3.2数 据 定 义3.2.1 定义语句格式CREATE TABLE ( ,

25、 , );:所要定义的基本表的名字:组成该表的各个属性(列):涉及相应属性列的完整性约束条件:涉及一个或多个属性列的完整性约束条件 常用完整性约束主码约束: PRIMARY KEY 唯一性约束: UNIQUE 非空值约束: NOT NULL 参照完整性约束三、删除基本表DROP TABLE ; ? 基本表删除 数据、表上的索引都删除表上的视图往往仍然保留,但 无法引用 删除基本表时,系统会从数据字典中删去有关该基本表及其索引的描述 (标准中没有,认为表建立后就永久存在)二、修改基本表ALTER TABLE ADD 完整性约束 DROP MODIFY ;:要修改的基本表 ADD 子句:增加新列和

26、新的完整性约束条件 DROP 子句:删除指定的完整性约束条件 MODIFY 子句:用于修改列名和数据类型ALTER TABLE Student ADD Scome DATE ; 不论基本表中原来是否已有数据,新增加的列一律为空值。 ?删除属性列 直接 /间接删除 把表中要保留的列及其内容复制到一个新表中 删除原表再将新表重命名为原表名直接删除属性列 :(新 )例: ALTER TABLE StudentDrop Scome ;ALTER TABLE Student MODIFY Sage SMALLINT;注:修改原有的列定义有可能会破坏已有数据建立与删除索引建立索引是加快查询速度的有效手段建

27、立索引DBA 或表的属主(即建立表的人)根据需要建立 有些 DBMS 自动建立以下列上的索引PRIMARY KEYUNIQUE维护索引DBMS 自动完成 ?使用索引DBMS 自动选择是否使用索引以及使用哪些索引一、建立索引语句格式CREATE UNIQUE CLUSTER INDEX 索引名 ON 表名(列名次序,列名次序 );用表名 指定要建索引的基本表名字 索引可以建立在该表的一列或多列上,各列名之间用逗号分隔用次序 指定索引值的排列次序,升序:ASC ,降序: DESC 。缺省值: ASCUNIQUE 表明此索引的每一个索引值只对应唯一的数据记录CLUSTER 表示要建立的索引是聚簇索引

28、唯一值索引 对于已含重复值的属性列不能建 UNIQUE 索引 对某个列建立 UNIQUE 索引后,插入新记录时 DBMS 会自动检查新记录在该列上是否取了重复值。 这相当于增加了一个 UNIQUE 约束聚簇索引 建立聚簇索引后,基表中数据也需要按指定的聚簇属性值的升序或降序存放。也即聚簇索引的索引 项顺序与表中记录的物理顺序一致例:CREATE CLUSTER INDEX Stusname ONStudent(Sname);在 Student 表的 Sname (姓名)列上建立一个聚簇索引,而且 Student 表中的记录将按照 Sname 值的升序存放在一个基本表上最多只能建立一个聚簇索引

29、聚簇索引的用途:对于某些类型的查询,可以提高查询效率 聚簇索引的适用范围很少对基表进行增删操作 很少对其中的变长列进行修改操作、删除索引DROP INDEX ;删除索引时,系统会从数据字典中删去有关该索引的描述。3.3查 询语句格式SELECT ALL|DISTINCT , FROM , WHERE GROUP BY HAVING ORDER BY ASC|DESC ;SELECT 子句:指定要显示的属性列FROM 子句:指定查询对象 (基本表或视图 )WHERE 子句:指定查询条件GROUP BY 子句:对查询结果按指定列的值分组,该属性列值相等的元组为一个组。通常会在每组 中作用集函数。H

30、AVING 短语:筛选出只有满足指定条件的组ORDER BY 子句:对查询结果表按指定列值的升序或降序排序3.3.2 单表查询查询仅涉及一个表,是一种最简单的查询操作一、选择表中的若干列二、选择表中的若干元组三、对查询结果排序四、使用集函数五、对查询结果分组查询经过计算的值SELECT 子句的 为表达式算术表达式字符串常量函数列别名等二、选择表中的若干元组消除取值重复的行查询满足条件的元组1.消除取值重复的行在 SELECT 子句中使用 DISTINCT 短语假设 SC表中有下列数据2.查询满足条件的元组WHERE 子句常用的查询条件(1) 比较大小在 WHERE 子句的 中使用比较运算符=,

31、=,=,!= 或 ,!,!, 逻辑运算符 NOT + 比较运算符(2) 确定范围使用谓词BETWEEN AND NOT BETWEEN AND (3)确定集合使用谓词 IN , NOT IN acb, addgb , ab 等都满足该匹配串 如 acb, afb 等都满足该匹配串值表 :用逗号分隔的一组取值(4)字符串匹配NOT LIKE匹配串 ESCAPE 换 码字符 匹配串 :指定匹配模板匹配模板:固定字符串或含通配符的字符串 当匹配模板为固定字符串时, 可以用 = 运算符取代 LIKE 谓词 用 != 或 运算符取代 NOT LIKE 谓词 通配符% (百分号 ) 代表任意长度(长度可以

32、为0)的字符串例:a%b 表示以 a开头,以 b结尾的任意长度的字符串。如 _ (下横线 ) 代表任意单个字符例:a_b 表示以 a开头,以 b结尾的长度为 3的任意字符串 查询 DB_Design 课程的课程号和学分。SELECT Cno , Ccredit FROM Course WHERE Cname LIKE DB_DesignESCAPE (5)涉及空值的查询 使用谓词 IS NULL 或 IS NOT NULL“IS NULL ”不 能用 “= NULL ”代 替(6)多重条件查询 用逻辑运算符 AND 和 OR 来联结多个查询条件AND 的优先级高于 OR 可以用括号改变优先级

33、可用来实现多种其他谓词NOT IN NOT BETWEEN AND 三、对查询结果排序使用 ORDER BY 子句 可以按一个或多个属性列排序 升序: ASC ;降序: DESC;缺省值为升序 当排序列含空值时ASC :排序列为空值的元组最后显示 DESC :排序列为空值的元组最先显示四、使用集函数5 类主要集函数 计数COUNT (DISTINCT|ALL * )COUNT (DISTINCT|ALL 列名)计算总和SUM ( DISTINCT|ALL 列名) 计算平均值AVG ( DISTINCT|ALL 列名) 求最大值MAX (DISTINCT|ALL 列名 ) 求最小值MIN (DI

34、STINCT|ALL 列名) DISTINCT 短语:在计算时要取消指定列中的重复值 ALL 短语:不取消重复值 ALL 为缺省值五、对查询结果分组使用 GROUP BY 子句分组 细化集函数的作用对象未对查询结果分组,集函数将作用于整个查询结果 对查询结果分组后,集函数将分别作用于每个组GROUP BY 子句的作用对象是查询的中间结果表 分组方法:按指定的一列或多列值分组,值相等的为一组 使用 GROUP BY 子句后, SELECT 子句的列名列表中只能出现分组属性和集函数 使用 HAVING 短语筛选最终输出结果只有满足 HAVING 短语指定条件的组才输出HAVING 短语与 WHER

35、E 子句的区别:作用对象不同WHERE 子句作用于基表或视图,从中选择满足条件的元组。 HAVING 短语作用于组,从中选择满足条件的组。连接查询同时涉及多个表的查询称为连接查询 用来连接两个表的条件称为连接条件或连接谓词 一般格式:. . 比较运算符: =、= 、=、!=. BETWEEN . AND . 连接字段连接谓词中的列名称为连接字段 连接条件中的各连接字段类型必须是可比的,但不必是相同的连接操作的执行过程嵌套循环法 (NESTED-LOOP)首先在表 1 中找到第一个元组,然后从头开始扫描表2,逐一查找满足连接件的元组,找到后就将表1 中的第一个元组与该元组拼接起来,形成结果表中一

36、个元组。表 2 全部查找完后,再找表 1 中第二个元组,然后再从头开始扫描表2 ,逐一查找满足连接条件的元组,找到后就将表 1 中的第二个元组与该元组拼接起来,形成结果表中一个元组。重复上述操作,直到表 1 中的全部元组都处理完毕排序合并法 (SORT-MERGE)常用于 = 连接首先按连接属性对表 1 和表 2 排序对表 1 的第一个元组,从头开始扫描表2,顺序查找满足连接条件的元组,找到后就将表1中的第一个元组与该元组拼接起来,形成结果表中一个元组。当遇到表2中第一条大于表 1 连接字段值的元组时,对表 2 的查询不再继续找到表 1 的第二条元组,然后从刚才的中断点处继续顺序扫描表2,查找

37、满足连接条件的元组,找到后就将表 1 中的第一个元组与该元组拼接起来,形成结果表中一个元组。直接遇到表 2 中大于表 1 连 接字段值的元组时,对表 2 的查询不再继续重复上述操作,直到表 1 或表 2 中的全部元组都处理完毕为止索引连接 (INDEX-JOIN)对表 2 按连接字段建立索引对表 1中的每个元组,依次根据其连接字段值查询表 2 的索引,从中找到满足条件的元组,找到后就 将表 1 中的第一个元组与该元组拼接起来,形成结果表中一个元组SQL 中连接查询的主要类型广义笛卡尔积等值连接 (含自然连接 )非等值连接查询 自身连接查询 外连接查询 复合条件连接查询一、广义笛卡尔积不带连接谓

38、词的连接很少使用二、等值与非等值连接查询等值连接连接运算符为 = 的连接操作. = . 任何子句中引用表 1 和表 2 中同名属性时,都必须加表名前缀。引用唯一属性名时可以加也可以省略 表名前缀。自然连接等值连接的一种特殊情况,把目标列中重复的属性列去掉。非等值连接查询连接运算符 不是 = 的连接操作三、自身连接一个表与其自己进行连接,称为表的自身连接 需要给表起别名以示区别由于所有属性名都是同名属性,因此必须使用别名前缀四、外连接( Outer Join )外连接与普通连接的区别 普通连接操作只输出满足连接条件的元组 外连接操作以指定表为连接主体,将主体表中不满足连接条件的元组一并输出 在表

39、名后面加外连接操作符 (*) 或(+) 指定非主体表 非主体表有一 “万能 ”的虚行,该行全部由空值组成 虚行可以和主体表中所有不满足连接条件的元组进行连接 由于虚行各列全部是空值,因此与虚行连接的结果中,来自非主体表的属性值全部是空值 左外连接外连接符出现在连接条件的左边右外连接外连接符出现在连接条件的右边五、复合条件连接WHERE 子句中含多个连接条件时,称为复合条件连接嵌套查询概述一个 SELECT-FROM-WHERE 语句称为一个查询块 将一个查询块嵌套在另一个查询块的 WHERE 子句或 HAVING 短语的条件中的查询称为嵌套查询 子查询的限制不能使用 ORDER BY 子句 层

40、层嵌套方式反映了 SQL 语言的结构化 有些嵌套查询可以用连接运算替代 不相关子查询子查询的查询条件不依赖于父查询相关子查询子查询的查询条件依赖于父查询不相关子查询是由里向外逐层处理。即每个子查询在 上一级查询处理之前求解,子查询的结果 用于建立其父查询的查找条件。相关子查询首先取外层查询中表的第一个元组,根据它与内层查询相关的属性值处理内层查询,若 WHERE 子句 返回值为真,则取此元组放入结果表; 然后再取外层表的下一个元组;重复这一过程,直至外层表全部检查完为止引出子查询的谓词带有 IN 谓词的子查询带有比较运算符的子查询带有 ANY 或 ALL 谓词的子查询带有 EXISTS 谓词的

41、子查询一、带有 IN 谓词的子查询二、带有比较运算符的子查询 当能确切知道内层查询返回单值时,可用比较运算符(,=,=,=,!=或 )。与 ANY 或 ALL 谓词配合使用三、带有 ANY 或 ALL 谓词的子查询谓词语义ANY :任意一个值ALL :所有值需要配合使用比较运算符 ANY大于子查询结果中的某个值 ALL大于子查询结果中的所有值 ANY小于子查询结果中的某个值= ANY大于等于子查询结果中的某个值= ALL大于等于子查询结果中的所有值= ANY小于等于子查询结果中的某个值= ALL小于等于子查询结果中的所有值= ANY等于子查询结果中的某个值=ALL等于子查询结果中的所有值(通常

42、没有实际意义)!=(或 ) ANY 不等于子查询结果中的某个值!=(或 ) ALL 不等于子查询结果中的任何一个值四、带有 EXISTS 谓词的子查询1. EXISTS 谓词2. NOT EXISTS 谓词3.不同形式的查询间的替换4.相关子查询的效率5.用 EXISTS/NOT EXISTS 实现全称量词6.用 EXISTS/NOT EXISTS 实现逻辑蕴函 1. EXISTS 谓词 存在量词 带有 EXISTS 谓词的子查询不返回任何数据,只产生逻辑真值“true ”或逻辑假值 “false 若内层查询结果非空,则返回真值 若内层查询结果为空,则返回假值 由 EXISTS 引出的子查询,

43、其目标列表达式通常都用 * ,因为带 EXISTS 的子查询只返回真值或假 值,给出列名无实际意义 2. NOT EXISTS 谓词3.不同形式的查询间的替换一些带 EXISTS 或 NOT EXISTS 谓词的子查询不能被其他形式的子查询等价替换所有带 IN 谓词、比较运算符、 ANY 和 ALL 谓词的子查询都能用带 EXISTS 谓词的子查询等价替换。5.用 EXISTS/NOT EXISTS 实现全称量词 (难点 )SQL 语言中没有全称量词(For all )可以把带有全称量词的谓词转换为等价的带有存在量词的谓词:( x)P ( x( P)6. 用 EXISTS/NOT EXISTS

44、 实现逻辑蕴函 (难点)SQL 语言中没有蕴函 (Implication) 逻辑运算 可以利用谓词演算将逻辑蕴函谓词等价转换为: p q pq3.3.5集合查询标准 SQL 直接支持的集合操作种类并操作 (UNION)一般商用数据库支持的集合操作种类并操作 (UNION)交操作 (INTERSECT)差操作 (MINUS)1并操作形式UNION参加 UNION 操作的各结果表的列数必须相同;对应项的数据类型也必须相同2交操作标准 SQL 中没有提供集合交操作,但可用其他方法间接实现。3差操作4.对集合操作结果的排序ORDER BY 子句只能用于对最终查询结果排序,不能对中间结果排序 任何情况下

45、, ORDER BY 子句只能出现在最后 对集合操作结果排序时, ORDER BY 子句中用数字指定排序属性3.4 数据更新3.4.1插入数据 两种插入数据方式插入单个元组 插入子查询结果1.插入单个元组语句格式INSERTINTO (, )VALUES ( , )功能 将新元组插入指定表中。INTO 子句指定要插入数据的表名及属性列属性列的顺序可与表定义中的顺序不一致没有指定属性列:表示要插入的是一条完整的元组,且属性列属性与表定义中的顺序一致指定部分属性列:插入的元组在其余属性列上取空值VALUES 子句提供的值必须与 INTO 子句匹配 值的个数 值的类型2.插入子查询结果语句格式INS

46、ERTINTO ( , )子查询;功能将子查询结果插入指定表中INSERTINTO Deptage(Sdept , Avgage)SELECT Sdept , AVG(Sage)FROM StudentGROUP BY Sdept ;INTO 子句 ( 与插入单条元组类似 )指定要插入数据的表名及属性列属性列的顺序可与表定义中的顺序不一致 没有指定属性列:表示要插入的是一条完整的元组 指定部分属性列:插入的元组在其余属性列上取空值 子查询SELECT 子句目标列必须与 INTO 子句匹配值的个数值的类型3.4.2修改数据语句格式UPDATE SET = , =WHERE ;功能修改指定表中满足

47、 WHERE 子句条件的元组三种修改方式修改某一个元组的值修改多个元组的值带子查询的修改语句UPDATE SCSET Grade=0WHERE CS=(SELETE SdeptFROM StudentWHERE Student.Sno = SC.Sno) ;SET 子句指定修改方式要修改的列修改后取值WHERE 子句指定要修改的元组缺省表示要修改表中的所有元组DBMS 在执行修改语句时会检查修改操作 是否破坏表上已定义的完整性规则实体完整性主码不允许修改用户定义的完整性NOT NULL 约束UNIQUE 约束值域约束DELETEFROMWHERE ; 功能删除指定表中满足 WHERE 子句条件

48、的元组 WHERE 子句指定要删除的元组 缺省表示要修改表中的所有元组 三种删除方式删除某一个元组的值删除多个元组的值带子查询的删除语句DBMS 在执行插入语句时会检查所插元组 是否破坏表上已定义的完整性规则 参照完整性? 不允许删除? 级联删除更新数据与数据一致性DBMS 在执行插入、删除、更新语句时必须保证数据库一致性必须有事务的概念和原子性完整性检查和保证3.5视 图视图的特点虚表,是从一个或几个基本表(或视图)导出的表只存放视图的定义,不会出现数据冗余基表中的数据发生变化,从视图中查询出的数据也随之改变 基于视图的操作查询删除受限更新定义基于该视图的新视图1.建立视图语句格式CREAT

49、E VIEW ( , )AS WITH CHECK OPTION ;DBMS 执行 CREATE VIEW 语句时只是把 视图的定义存入数据字典,并不执行其中 的 SELECT 语句。在对视图查询时,按视图的定义从基本表 中将数据查出。组成视图的属性列名全部省略或全部指定省略:由子查询中 SELECT 目标列中的诸字段组成 明确指定视图的所有列名 :(1)某个目标列是集函数或列表达式(2)目标列为 *(3)多表连接时选出了几个同名列作为视图的字段(4)需要在视图中为某个列启用新的更合适的名字 WITH CHECK OPTION透过视图进行增删改操作时,不得破坏视 图定义中的谓词条件(即子查询中

50、的条件表达式) 带表达式的视图 定义一个反映学生出生年份的视图。CREATE VIEW BT_S(Sno ,Sname, Sbirth)ASSELECT Sno , Sname , 2000-SageFROM Student 设置一些派生属性列 , 也称为虚拟列 -Sbirth 带表达式的视图必须明确定义组成视图的各个属 性列名一类不易扩充的视图以 SELECT * 方式创建的视图可扩充性差,应尽可能避免2.删除视图DROP VIEW ; 该语句从数据字典中删除指定的视图定义 由该视图导出的其他视图定义仍在数据字典中,但已不能使用,必须显式删除 删除基表时,由该基表导出的所有视图定义都必须显式

51、删除3.5.2查询视图从用户角度:查询视图与查询基本表相同DBMS 实现视图查询的方法 实体化视图( View Materialization ) 有效性检查:检查所查询的视图是否存在 执行视图定义,将视图临时实体化,生成临时表 查询视图转换为查询临时表查询完毕删除被实体化的视图 (临时表 ) 视图消解法( View Resolution )进行有效性检查,检查查询的表、视图等是否存在。如果存在,则从数据字典中取出视图的 定义 把视图定义中的子查询与用户的查询结合起来,转换成等价的对基本表的查询执行修正后的查询视图实体化法 视图消解法3.5.3更新视图用户角度:更新视图与更新基本表相同DBMS

52、 实现视图更新的方法 视图实体化法( View Materialization ) 视图消解法( View Resolution ) 指定 WITH CHECK OPTION 子句后DBMS 在更新视图时会进行检查,防止用户通过视图对不属于视图范围内的基本表数据进行更新 更新视图的限制一些视图是不可更新的,因为对这些视图的更新不能唯一地有意义地转换成对相应基本表的更新(对两类方法均如此 )允许对行列子集视图进行更新 对其他类型视图的更新不同系统有不同限制DB2 对视图更新的限制:(1)若视图是由两个以上基本表导出的,则此视图不允许更新。(2)若视图的字段来自字段表达式或常数,则不允许对此视图执

53、行 INSERT 和 UPDATE 操作,但允许执行 DELETE 操作。若视图的字段来自集函数,则此视图不允许更新。(4) 若视图定义中含有 GROUP BY 子句,则此视图不允许更新。(5)若视图定义中含有 DISTINCT 短语,则此视图不允许更新。(6)若视图定义中有嵌套查询,并且内层查询的 FROM 子句中涉及的表也是导出该视图的基本表,则此视图不允许 更新。(7)一个不允许更新的视图上定义的视图也不允许更新 视图对重构数据库提供了一定程度的逻辑独立性物理独立性与逻辑独立性的概念 视图在一定程度上保证了数据的逻辑独立性 视图只能在一定程度上提供数据的逻辑独立性 由于对视图的更新是有条

54、件的,因此应用程序中修改数据的语句可能仍会因基本表结构的改变而改 变。视图能够对机密数据提供安全保护对不同用户定义不同视图,使每个用户只能看到他有权看到的数据通过 WITH CHECK OPTION 对关键数据定义操作时间限制3.6数据控制3.6.1授权3.6.2收回权限 数据控制亦称为数据保护,包括数据的:安全性控制完整性控制并发控制恢复SQL 语言的数据控制功能SQL 语言提供了数据控制功能,能够在一定程度上保证数据库中数据的完全性、完整性,并提供了一定的并发控制 及恢复能力。1.完整性 数据库的完整性是指数据库中数据的正确性与相容性。 SQL 语言定义完整性约束条件CREATE TABL

55、E 语句ALTER TABLE 语句码取值唯一的列参照完整性其他约束条件2.并发控制并发控制 : 当多个用户并发地对数据库进行操作时,对他们加以控制、协调,以保证并发操作正确执行,保 持数据库的一致性。SQL 语言并发控制能力:提供事务、事务开始、事务结束、提交等概念3.恢复恢复 : 当发生各种类型的故障导致数据库处于不一致状态时,将数据库恢复到一致状态的功能。SQL 语言恢复功能: 提供事务回滚、重做等概念( UNDO 、 REDO )4.安全性安全性:保护数据库,防止不合法的使用所造成的数据泄露和破坏。 保证数据安全性的主要措施 存取控制:控制用户只能存取他有权存取的数据 规定不同用户对于

56、不同数据对象所允许执行的操作DBMS 实现数据安全性保护的过程用户或 DBA 把授权决定告知系统SQL 的 GRANT 和 REVOKEDBMS 把授权的结果存入数据字典当用户提出操作请求时, DBMS 根据授权定义进行检查,以决定是否执行操作请求3.6.1授 权GRANT 语句的一般格式:GRANT ,.ON TO ,.WITH GRANT OPTION;谁定义? DBA 和表的建立者(即表的属主)REVOKE 功能:将对指定操作对象的指定操作权限授予指定的用户。(1)操作权限(2)用户的权限建表( CREATETAB )的权限 :属于 DBADBA 授予 - 普通用户基本表或视图的属主拥有

57、对该表或视图的一切操作权限接受权限的用户 :一个或多个具体用户PUBLIC (全体用户)(4) WITH GRANT OPTION 子句指定了 WITH GRANT OPTION子句 :获得某种权限的用户还可以把这种权限再授予别的用户。没有指定 WITH GRANT OPTION子句 :获得某种权限的用户只能使用该权限,不能传播该权限查询 Student 表权限授给用户 U1GRANT SELECTON TABLE StudentTO U1;把对 Student 表和 Course 表的全部权限授予用户 U2 和 U3GRANT ALL PRIVILIGESON TABLE Student,

58、CourseTO U2, U3;3.6.2收回权限REVOKE 语句的一般格式为:REVOKE ,.ON FROM ,.;功能:从指定用户那里收回对指定对象的指定权限3.7嵌 入 式 SQLSQL 语言提供了两种不同的使用方式:交互式嵌入式 为什么要引入嵌入式 SQLSQL 语言是非过程性语言 事务处理应用需要高级语言 这两种方式细节上有差别,在程序设计的环境下, SQL 语句要做某些必要的扩充3.7.1嵌入式 SQL 的一般形式为了区分 SQL 语句与主语言语句,需要 : 前缀: EXEC SQL 结束标志:随主语言的不同而不同 以 C 为主语言的嵌入式 SQL 语句的一般形式EXEC SQ

59、L ;DBMS 处理宿主型数据库语言 SQL 的方法 预编译 修改和扩充主语言使之能处理 SQL 语句预编译1 由 DBMS 的预处理程序对源程序进行扫描,识别出 SQL 语句 2把它们转换成主语言调用语句,以使主语言编译程序能识别它 3最后由主语言的编译程序将整个源程序编译成目标码。嵌入 SQL 语句说明性语句嵌入SQL 语句可执行语句数据定义 数据控制 数据操纵允许出现可执行的高级语言语句的地方,都可以写可执行 SQL 语句 允许出现说明语句的地方,都可以写说明性 SQL 语句3.7.2嵌入式 SQL 语句与主语言之间的通信将 SQL 嵌入到高级语言中混合编程,程序中会含有两种不同计算模型

60、的语句SQL 语句 描述性的面向集合的语句 负责操纵数据库高级语言语句过程性的面向记录的语句负责控制程序流程工作单元之间的通信方式1. SQL 通信区向主语言传递 SQL 语句的执行状态信息主语言能够据此控制程序流程2.主变量1)主语言向 SQL 语句提供参数2)将 SQL 语句查询数据库的结果交主语言进一步处理3.游标 解决集合性操作语言与过程性操作语言的不匹配为什么要使用游标SQL 语言与主语言具有不同数据处理方式SQL 语言是面向集合的,一条 SQL 语句原则上可以产生或处理多条记录 主语言是面向记录的,一组主变量一次只能存放一条记录仅使用主变量并不能完全满足 SQL 语句向应用程序输出

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论