《数据库系统概论复习资料(王珊版).pdf》由会员分享,可在线阅读,更多相关《数据库系统概论复习资料(王珊版).pdf(58页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、 数据库系统概论笔记 数据:是数据库中存储的基本对象 数据的定义:描述事物的符号记录 数据的种类:文字、图形、图象、声音等 数据的特点:数据与其语义是不可分的 数据库简称:是长期储存在计算机内、有组织的、可共享的大量数据集合数据库的特征:数据按一定的数据模型组织、描述和储存 可为各种用户共享 冗余度较小 数据独立性较高 易扩展 数据库管理系统(,简称):是位于用户与操作系统之间的一层数据管理软件。的用途:科学地组织和存储数据、高效地获取和维护数据 的主要功能:数据库的运行管理 保证数据的安全性、完整性、多用户对数据的并发使用 发生故障后的系统恢复 数据库的建立和维护功能(实用程序 数据库数据批
2、量装载 数据库转储 介质故障恢复 数据库的重组织 性能监视等 数据库系统(,简称)是指在计算机系统中引入数据库后的系统构成。数据库系统的构成 由数据库、数据库管理系统(及其开发工具)、应用系统、数据库管理员(和用户)构成。数据管理 对数据进行分类、组织、编码、存储、检索和维护,是数据处理的中心问题 数据模型这个工具来 抽象、表示和处理 现实世界中的数据和信息。数据模型应满足三方面要求 能比较真实地模拟现实世界 容易为人所理解 便于在计算机上实现 数据模型分成两个不同的层次 概念模型 也称信息模型,它是按用户的观点来对数据和信息建模。数据模型 主要包括网状模型、层次模型、关系模型等,它是按计算机
3、系统的观点对数据建模。客观对象的抽象过程-两步抽象 现实世界中的客观对象抽象为概念模型;把概念模型转换为某一 支持的数据模型。数据结构 对象类型的集合 数据结构是对系统静态特性的描述 两类对象 与数据类型、内容、性质有关的对象 与数据之间联系有关的对象 数据操作 对数据库中各种对象(型)的实例(值)允许执行的操作及有关的操作规则数据操作的类型 检索 更新(包括插入、删除、修改)数据模型对操作的定义 操作的确切含义 操作符号 操作规则(如优先级)实现操作的语言 数据操作是对系统动态特性的描述。数据模型对约束条件的定义 反映和规定本数据模型必须遵守的基本的通用的完整性约束条件。提供定义完整性约束条
4、件的机制,以反映具体应用所涉及的数据必须遵守的特定的语义约 束条件。信息世界中的基本概念 (1)实体(Entity)客观存在并可相互区别的事物称为实体。(2)属性(Attribute)实体所具有的某一特性称为属性。一个实体可以由若干个属性来刻画。(3)码(Key)唯一标识实体的属性集称为码。(4)域(Domain)属性的取值 X 围称为该属性的域。(5)实体型(Entity Type)用实体名及其属性名集合来抽象和刻画同类实体称为实体型 (6)实体集(Entity Set)同型实体的集合称为实体集 联系(Relationship)现实世界中事物内部以及事物之间的联系在信息世界 中反映为实体内部
5、的联系和实体之间的联系 实体型间联系 两个实体型 一对一联系()三个实体型 一对多联系()一个实体型 多对多联系()两个实体型间的联系 一对一联系 如果对于实体集 中的每一个实体,实体集中至多有一个实体与之联系,反之亦然,则称实体集与实体集具有一对一联系。记为。一对多联系 如果对于实体集 中的每一个实体,实体集 中有 个实体(?)与之联系,反之,对于实体集中的每一个实体,实体集 中至多只有一个实体与之联系,则称实体集 与实体集有一对多联系 记为 多对多联系(m:n)如果对于实体集 中的每一个实体,实体集 中有 个实体(?对于实体集 中的每一个实体,实体集 中也有个实体(?实体集与实体具有多对多
6、联系。记为 概念模型的表示方法 )与之联系,反之,)与之联系,则称 实体联系方法(E-R 方法)用 E-R 图来描述现实世界的概念模型 E-R 方法也称为 E-R 模型 常用数据模型 非关系模型 层次模型()网状模型 数据结构:以基本层次联系为基本单位 基本层次联系:两个记录以及它们之间的一对多(包括一对一 的联系关系模型(Relational Model)数据结构:表 面向对象模型(Object Oriented Model)数据结构:对象 层次模型 满足下面两个条件的基本层次联系的集合为层次模型。有且只有一个结点没有双亲结点,这个结点称为根结点 根以外的其它结点有且只有一个双亲结点表示方法
7、 实体型:用记录类型描述。每个结点表示一个记录类型。属性:用字段描述。每个记录类型可包含若干个字段。联系:用结点之间的连线表示记录(类)型之间的 一对多的联系 网状数据模型的数据结构 网状模型 满足下面两个条件的基本层次联系的集合为网状模型。允许一个以上的结点无双亲;一个结点可以有多于一个的双亲。表示方法(与层次数据模型相同)实体型:用记录类型描述。每个结点表示一个记录类型。属性:用字段描述。每个记录类型可包含若干个字段。联系:用结点之间的连线表示记录(类)型之 间的一对多的父子联系。关系模型的基本概念 关系(Relation)一个关系对应通常说的一 X 表。元组(Tuple)表中的一行即为一
8、个元组。属性(Attribute)表中的一列即为一个属性,给每一个属性起一个名称即属性名。关系必须是规 X 化的,满足一定的规 X 条件 最基本的规 X 条件:关系的每一个分量必须是一个不 可分的数据项。查询、插入、删除、更新 数据操作是集合操作,操作对象和操作结果都是关系,即若干元组的集合 存取路径对用户隐蔽,用户只要指出“干什么”,不必详细说明“怎么干”关系模型的完整性约束 实体完整性 参照完整性 用户定义的完整性 关系数据模型的存储结构 表以文件形式存储 有的 DBMS 一个表对应一个操作系统文件 有的 DBMS 自己设计文件结构 关系模型的优缺点 优点 建立在严格的数学概念的基础上 概
9、念单一。数据结构简单、清晰,用户易懂易用 实体和各类联系都用关系来表示。对数据的检索结果也是关系。关系模型的存取路径对用户透明 具有更高的数据独立性,更好的安全 XX 性 简化了程序员的工作和数据库开发建立的工作 缺点 存取路径对用户透明导致查询效率往往不如非 关系数据模型 为提高性能,必须对用户的查询请求进行优化 增加了开发数据库管理系统的难度 数据库系统外部的体系结构 单用户结构 主从式结构 分布式结构 客户/服务器结构 浏览器/应用服务器 /数据库服务器结构 分布式结构的数据库系统 数据库中的数据在逻辑上是一个整体,但物理地分布在计算机网络的不同结点上。网络中的每个结点都可以独立处理本地
10、数据库中的数据,执行局部应用同时也可以同时存取和处理多个异地数据库中的数据,执行全局应用 优点 适应了地理上分散的公司、团体和组织对于数据库应用的需求。缺点 数据的分布存放给数据的处理、管理与维护带来困难。当用户需要经常访问远程数据时,系统效率会明显地受到网络传输的制约 数据库管理员 决定数据库中的信息内容和结构 决定数据库的存储结构和存取策略 定义数据的安全性要求和完整性约束条件 关系数据库 关系模型的组成 关系数据结构 关系操作集合 关系完整性约束 1)常用的关系操作查询 选择、投影、连接、除、并、交、差数据更新 插入、删除、修改 查询的表达能力是其中最主要的部分 2)关系操作的特点 集合
11、操作方式,即操作的对象和结果都是集合。非关系数据模型的数据操作方式:一次一记录文件系统的数据操作方式 3)关系数据语言的种类 关系代数语言 用对关系的运算来表达查询要求 4)关系数据语言的特点 关系语言是一种高度非过程化的语言 存取路径的选择由 DBMS 的优化机制来完成用户不必用循环结构就可以完成数据操作 能够嵌入高级语言中使用 关系代数、元组关系演算和域关系演算三种语言在表达能力上完全等价 关系 域(Domain)2.笛卡尔积(Cartesian Product)3.关系(Relation)域是一组具有相同数据类型的值的集合。例:整数 实数 介于某个取值 X 围的整数 长度指定长度的字符串
12、集合 ,男?,,女?介于某个取值 X 围的日期 笛卡尔积 给定一组域 D1,D 2,Dn,这些域中可以有相同的。D1,D2,Dn 的笛卡尔积为:D1D 2 Dn(d1,d2,dn)di Di,i 1,2,n 所有域的所有取值的一个组合 不能重复 2)元组(Tuple)笛卡尔积中每一个元素(d1,d2,dn)叫作一个 n 元组(n-tuple)或简称元组。3)分量(Component)笛卡尔积元素(d1,d2,dn)中的每一个值 di 叫作一个分量。4)基数(Cardinal number)若 Di(i 1,2,n)为有限集,其基数为 mi(i 1,2,n),则 D 1 D 2 Dn 的基数 M
13、 为:5)笛卡尔积的表示方法 笛卡尔积可表示为一个二维表。表中的每行对应一个元组,表中的每列对应一个域。关系(Relation)1)关系 D1D 2 Dn 的子集叫作在域 D 1,D2,Dn 上的关系,表示为 R(D1,D2,Dn)R:关系名 n:关系的目或度(Degree)2)元组 关系中的每个元素是关系中的元组,通常用 t 表示。3)单元关系与二元关系 当 n=1 时,称该关系为单元关系(当 n=2 时,称该关系为二元关系(Unary relation Binary relation )。)4)关系的表示 关系也是一个二维表,表的每行对应一个元组,表的每列对应一个域。5)属性 关系中不同列
14、可以对应相同的域,为了加以区分,必须对每列起一个名字,称为属性(n 目关系必有 n 个属性。6)码 Attribute )。候选码(Candidate key)若关系中的某一属性组的值能唯一地标识 一个元组,则称该属性组为候选码 在最简单的情况下,候选码只包含一个属性。称为全码(All-key)在最极端的情况下,关系模式的所有属性组 是这个关系模式的候选码,称为全码(All-key)主码 若一个关系有多个候选码,则选定其中一个 为主码(Primary key)主码的诸属性称为主属性(Prime attribute)。不包含在任何侯选码中的属性称为非码属性 (Non-key attribute)
15、7)三类关系 基本关系(基本表或基表)实际存在的表,是实际存储数据的逻辑表示 查询表 查询结果对应的表 视图表 由基本表或其他视图表导出的表,是虚表,不对 应实际存储的数据 基本关系的性质 列是同质的(Homogeneous)每一列中的分量是同一类型的数据,来自同 一个域 不同的列可出自同一个域 其中的每一列称为一个属性 不同的属性要给予不同的属性名 列的顺序无所谓 列的次序可以任意交换 遵循这一性质的数据库产品(如 ORACLE),增加新属性时,永远是插至最后一列 但也有许多关系数据库产品没有遵循这一 性质,例如 FoxPro 仍然区分了属性顺序 任意两个元组不能完全相同 由笛卡尔积的性质决
16、定 但许多关系数据库产品没有遵循这一性质。例如:Oracle,FoxPro 等都允许关系表中存在两个完全相同 的元组,除非用户特别定义了相应的约束条件。行的顺序无所谓行的次序可以任意交换 遵循这一性质的数据库产品(如 ORACLE),插入一个元组时永远插至最后一行 但也有许多关系数据库产品没有遵循这一性 质,例如 FoxPro 仍然区分了元组的顺序 分量必须取原子值 每一个分量都必须是不可分的数据项。这是规 X 条件中最基本的一条 关系模式(Relation Schema)是型 关系是值 关系模式是对关系的描述 元组集合的结构 属性构成 属性来自的域 属性与域之间的映象关系 元组语义以及完整性
17、约束条件 属性间的数据依赖关系集合 定义关系模式 关系模式可以形式化地表示为:R(U,D,dom,F)R 关系名 U 组成该关系的属性名集合 D 属性组 U 中属性所来自的域 dom 属性向域的映象集合 F 属性间的数据依赖关系集合 关系模式通常可以简记为 R(U)或 R(A1,A2,An)R 关系名 A1,A2,An 属性名 注:域名及属性向域的映象常常直接说明为 属性的类型、长度 关系模式 对关系的描述 静态的、稳定的 关系 关系模式在某一时刻的状态或内容 动态的、随时间不断变化的 关系模式和关系往往统称为关系 通过上下文加以区别 关系数据库 在一个给定的应用领域中,所有实体及实 体之间联
18、系的关系的集合构成一个关系数 据库。关系数据库的型与值关系数据库也有型和值之分关系数据库的型称为关系数据库模式,是对关系数据库的描述若干域的定义在这些域上定义的若干关系模式关系数据库的值是这些关系模式在某一时刻对应的关系的集合,通常简称为关系数据库 关系的完整性 关系模型的完整性规则是对关系的某种约束条件。关系模型中三类完整性约束:实体完整性 参照完整性 用户定义的完整性 实体完整性和参照完整性是关系模型必须满足的完整性约束条件,被称作是关系的两个 由关系系统自动支持。实体完整性 实体完整性规则(Entity Integrity)若属性 A 是基本关系 R 的主属性,则属性 不变性,应该 A
19、不能取空值 关系模型必须遵守实体完整性规则的原因 (1)实体完整性规则是针对基本关系而言的。一个基本表通常对应现实世界的一个实体集或多对多联系。(2)现实世界中的实体和实体间的联系都是可区分的,即它们具有某种唯一性标识。(3)相应地,关系模型中以主码作为唯一性标识。关系模型必须遵守实体完整性规则的原因(续)(4)主码中的属性即主属性不能取空值。空值就是“不知道”或“无意义”的值。主属性取空值,就说明存在某个不可标识的实体,即存在不可区分的实体,这与第(因此这个规则称为实体完整性。注意 实体完整性规则规定基本关系的所有 主属性都不能取空值 参照完整性 1.关系间的引用 2.外码 3.参照完整性规
20、则 2)点相矛盾,关系间的引用在关系模型中实体及实体间的联系都是用 关系来描述的,因此可能存在着关系与关 系间的引用。外码()设 F 是基本关系 R 的一个或一组属性,但不 是关系 R 的码。如果 F 与基本关系 S 的主码 Ks 相对应,则称 F 是基本关系 R 的外码 基本关系 R 称 为参照关系(Referencing Relation)基本关系 S 称为被参照关系(Referenced Relation)或目标关系(Target Relation)。说明 关系 R 和 S 不一定是不同的关系 目标关系 S 的主码 Ks 和参照关系的外码 F 必须定义在同一个(或一组)域上外码并不一定要
21、与相应的主码同名 当外码与相应的主码属于不同关系时,往往 取相同的名字,以便于识别 参照完整性规则 若属性(或属性组)F 是基本关系 R 的外码 它与基本关系 S 的主码 Ks 相对应(基本关 系 R 和 S 不一定是不同的关系),则对于 R 中每个元组在 F 上的值必须为:或者取空值(F 的每个属性值均为空值)或者等于 S 中某个元组的主码值。用户定义的完整性 用户定义的完整性是针对某一具体关系数据库的约束条件,反映某一具体应用所涉及的数据必须满足的语义要求。关系模型应提供定义和检验这类完整性的机制,以便用统一的系统的方法处理它们,而不要由应用程序承担这一功能。Operation 运算,操作
22、 Operator 算子 Operand 操作数 1.关系代数 一种抽象的查询语言 用对关系的运算来表达查询 2关系代数运算的三个要素 运算对象:关系 运算结果:关系 运算符:四类 关系代数运算符 集合 并 比 较 大于 运算-差 运 算?大于等于 符 交 符 小于 广义笛卡尔积?小于等于 等于 不等于 专门的关系 选择 逻辑运算符 非 运算符 投影 与 连接 或 除 4关系代数运算的分类 传统的集合运算 并、差、交、广义笛卡尔积 专门的关系运算 选择、投影、连接、除 5表示记号 (1)R,t R,tAi 设关系模式为 R(A1,A2,An)它的一个关系设为 R。t R 表示 t 是 R 的一
23、个元组 tAi 则表示元组 t 中相应于属性 Ai 的一个分量 (2)A,tA,A 若 A=Ai1,Ai2,Aik ,其中 Ai1,Ai2,Aik 性列或域列。tA=(tAi1,tAi2,tAik)表示元组 是 A1,A2,An 中的一部分,则 A 称为属 t 在属性列 A 上诸分量的集合。A 则表示 A1,A2,An 中去掉 Ai1,Ai 2,Aik 后剩余的属性组。(3)tr ts R 为 n 目关系,S 为 m 目关系。tr R,ts S,tr ts 称为元组的连接。它是一个 n+m 列的元组,前 n 个分量为 R 中的一个 n 元组,后 m 个分量为 S 中的一个 m 元组。4)象集
24、Zx 给定一个关系 R(X,Z),X 和 Z 为属性组。当 tX=x 时,x 在 R 中的象集(Images Set)为:Zx=tZ|t R,tX=x 它表示 R 中属性组 X 上值为 x 的诸元组在 Z 上分量的集合。并()R 和 S 具有相同的目 n(即两个关系都有 n 个属性)相应的属性取自同一个域 R S 仍为 n 目关系,由属于 R S=t|t R t S R 或属于 S 的元组组成 R 和 S 具有相同的目 n 相应的属性取自同一个域 R-S 仍为 n 目关系,由属于 R 而不属于 S 的所有元组组成 R-S=t|t R t S R 和 S 具有相同的目 n 相应的属性取自同一个域
25、 R S 仍为 n 目关系,由既属于 R S=t|t R t R S=R(R-S)R 又属于 S S 的元组组成 广义笛卡尔积()Rn 目关系,k1 个元组Sm 目关系,k2 个元组R S列:(n+m)列的元组的集合 元组的前 n 列是关系 R 的一个元组 后 m 列是关系 S 的一个元组行:k1 k2 个元组 R S=tr ts|tr R ts S 专门的关系运算 选择()1)选择又称为限制(Restriction)2)选择运算符的含义 在关系 R 中选择满足给定条件的诸元组 F(R)=t|t R F(t)=真 F:选择条件,是一个逻辑表达式,基本形式为:(X1 Y1 )(X2Y2 ):比较
26、运算符(,?,?,或)X1,Y1 等:属性名、常量、简单函数;属性名也可以用它的序号来代替;:逻辑运算符(或):表示任选项 :表示上述格式可以重复下去 3)选择运算是从行的角度进行的运算 投影()1)投影运算符的含义 从 R 中选择出若干属性列组成新的关系 A(R)=tA|t R A:R 中的属性列 2)投影操作主要是从列的角度进行运算 但投影之后不仅取消了原关系中的某些列,而且还可能取消某些元组(避免重复行)连接()R 1)连接也称为 连接 2)连接运算的含义 从两个关系的笛卡尔积中选取属性间满足一定条件的元组 S=|tr R ts S trA tsB A 和 B:分别为 R 和 S 上度数
27、相等且可比的属性组 :比较运算符 连接运算从 R 和 S 的广义笛卡尔积 RS 中选取(R 关系)在 A 属性组上的值与(S 关系)在 B 属性组上值满足比较关系的元组。3)两类常用连接运算 等值连接(equijoin)什么是等值连接 为“”的连接运算称为等值连接 等值连接的含义 R S=从关系 R 与 S 的广义笛卡尔积中选取 等值连接为:|tr R ts S tr A=tsB A、B 属性值相等的那些元组,即 4)一般的连接操作是从行的角度进行运算。自然连接还需要取消重复列,所以是同时从行和列的角度进行运算。)象集 给定一个关系 R(X,Z),X 和 Z 为属性组。当 tX=x 时,x 在
28、 R 中的象集(Images Set)为:Zx=tZ|t R,tX=x 它表示 R 中属性组 X 上值为 x 的诸元组在 Z 上分量的集合。除()给定关系 R(X,Y)和 (Y,Z),其中,为属性组。中的与中的可以有不同的属性名,但必须出自相同 的域集。与的除运算得到一个新的关系 P(X),是 R 中 满足下列条件的元组在属性列上的投影:元组在 上分 量值的象集包含在上投影的集合。R S=tr X|tr R Y(S)Yx Yx:在 中的象集,2)除操作是同时从行和列角度进行运算 第三章 关系数据库标准语言 概述 SQL 的特点 1.综合统一 2.高度非过程化 3.面向集合的操作方式 4.以同一
29、种语法结构提供两种使用方法 5.语言简洁,易学易用 语言简捷,易学易用 表 语言的动词 数 据 定 义,数 据 查 询 数 据 操 纵,数 据 控 制,数据定义 表的数据定义语句 操 作 对 操 作 方 式 创 建 删 除 修 改 象 表 视 图 索 引 定义语句格式 CREATE TABLE (,);:所要定义的基本表的名字 :组成该表的各个属性(列):涉及相应属性列的完整性约束条件 :涉及一个或多个属性列的完整性约束条件 常用完整性约束 主码约束:PRIMARY KEY 唯一性约束:UNIQUE 非空值约束:NOT NULL 参照完整性约束 三、删除基本表 DROP TABLE;基本表删除
30、 数据、表上的索引都删除 表上的视图往往仍然保留,但 无法引用 删除基本表时,系统会从数据字典中删去有关该 基本表及其索引的描述 (标准中没有,认为表建立后就永久存在)二、修改基本表 ALTER TABLE ADD 完整性约束 DROP MODIFY ;:要修改的基本表 ADD 子句:增加新列和新的完整性约束条件 DROP 子句:删除指定的完整性约束条件 MODIFY 子句:用于修改列名和数据类型 ALTER TABLE Student ADD Scome DA TE;不论基本表中原来是否已有数据,新增加的列一律为空值。删除属性列 直接/间接删除 把表中要保留的列及其内容复制到一个新表中 删除
31、原表 再将新表重命名为原表名 直接删除属性列:(新)例:ALTER TABLE Student Drop Scome;ALTER TABLE Student MODIFY Sage SMALLINT;注:修改原有的列定义有可能会破坏已有数据 建立与删除索引 建立索引是加快查询速度的有效手段 建立索引 DBA 或表的属主(即建立表的人)根据需要建立 有些 DBMS 自动建立以下列上的索引 PRIMARY KEY UNIQUE 维护索引 DBMS 自动完成 使用索引 DBMS 自动选择是否使用索引以及使用哪些索引 一、建立索引 语句格式 CREATE UNIQUE CLUSTER INDEX ON
32、 (,);用 指定要建索引的基本表名字 索引可以建立在该表的一列或多列上,各列名之间用逗号分隔 用 指定索引值的排列次序,升序:ASC,降序:DESC。缺省值:ASC UNIQUE 表明此索引的每一个索引值只对应唯一的数据记录 CLUSTER 表示要建立的索引是聚簇索引 唯一值索引 对于已含重复值的属性列不能建 UNIQUE 索引 对某个列建立 UNIQUE 索引后,插入新记录时 DBMS 会自动检查新记录在该列上是否 取了重复值。这相当于增加了一个 UNIQUE 约束 聚簇索引 建立聚簇索引后,基表中数据也需要按指定的聚簇属性值的升序或降序存放。也即聚簇索引的索引项顺序与表中记录的物理顺序一
33、致 例:CREATE CLUSTER INDEX Stusname ON Student(Sname);在表的(XX)列上建立一个聚簇索引,而且表中的记录将按照值的升序存放 在一个基本表上最多只能建立一个聚簇索引 聚簇索引的用途:对于某些类型的查询,可以提高查询效率 聚簇索引的适用 X 围 很少对基表进行增删操作 很少对其中的变长列进行修改操作 二、删除索引 DROP INDEX;删除索引时,系统会从数据字典中删去有关该索引的描述。查 询 语句格式 SELECT ALL|DISTINCT ,FROM ,WHERE GROUP BY HA VING ORDER BY ASC|DESC ;SELE
34、CT 子句:指定要显示的属性列 FROM 子句:指定查询对象(基本表或视图)WHERE 子句:指定查询条件 GROUP BY 子句:对查询结果按指定列的值分组,该属性列值相等的元组为一个组。通常会在每组中作用集函数。HA VING 短语:筛选出只有满足指定条件的组 ORDER BY 子句:对查询结果表按指定列值的升序或降序排序 单表查询 查询仅涉及一个表,是一种最简单的查询操作 一、选择表中的若干列 二、选择表中的若干元组 三、对查询结果排序 四、使用集函数 五、对查询结果分组 查询经过计算的值 SELECT 子句的 为表达式 算术表达式 字符串常量 函数 列别名 等 二、选择表中的若干元组
35、消除取值重复的行 查询满足条件的元组 消除取值重复的行在 SELECT 子句中使用 DISTINCT 短语假设 SC 表中有下列数据 查询满足条件的元组 子句常用的查询条件 比较大小 在 WHERE 子句的 中使用比较运算符 =,=,=,!=或 ,!,!,逻辑运算符 NOT+比较运算符 确定 X 围 使用谓词 BETWEEN AND NOT BE TWEEN AND 确定集合 使用谓词 IN,NOTIN :用逗号分隔的一组取值 字符串匹配 NOT LIKE,?ESCAPE,?:指定匹配模板 匹配模板:固定字符串或含通配符的字符串 当匹配模板为固定字符串时,可以用=运算符取代 LIKE 谓词 用
36、 !=或 运算符取代 NOT LIKE 谓词 通配符%(百分号)代表任意长度(长度可以为 0)的字符串 例:a%b 表示以 a 开头,以 b 结尾的任意长度的字符串。如 该匹配串 acb,addgb,ab 等都满足 _(下横线)代表任意单个字符 例:a_b 表示以 a 开头,以 配串 b 结尾的长度为 3 的任意字符串。如 acb,afb 等都满足该匹 查询 DB_Design 课程的课程号和学分。SELECT Cno,Ccredit FROM Course WHERE Cname LIKE DB_Design ESCAPE 涉及空值的查询 使用谓词 IS NULL 或 IS NOT NULL
37、 “IS NULL”不能用“=NULL”代替 多重条件查询 用逻辑运算符 AND 和 OR 来联结多个查询条件 AND 的优先级高于 OR 可以用括号改变优先级 可用来实现多种其他谓词 NOT IN NOT BETWEEN AND 三、对查询结果排序 使用 ORDER BY 子句 可以按一个或多个属性列排序 升序:ASC;降序:DESC;缺省值为升序 当排序列含空值时 ASC:排序列为空值的元组最后显示 DESC:排序列为空值的元组最先显示 四、使用集函数 5 类主要集函数 计数 COUNT COUNT (DISTINCT|ALL*(DISTINCT|ALL)计算总和 SUM(DISTINCT
38、|ALL)计算平均值 AVG(DISTINCT|ALL)求最大值 MAX MIN (DISTINCT|ALL)求最小值 (DISTINCT|ALL)DISTINCT 短语:在计算时要取消指定列中的重复值 ALL 短语:不取消重复值 ALL 为缺省值 五、对查询结果分组 使用 GROUP BY 子句分组 细化集函数的作用对象 未对查询结果分组,集函数将作用于整个查询结果 对查询结果分组后,集函数将分别作用于每个组 GROUP BY 子句的作用对象是查询的中间结果表 分组方法:按指定的一列或多列值分组,值相等的为一组 使用 GROUP BY 子句后,SELECT 子句的列名列表中只能出现分组属性和
39、集函数 使用短语筛选最终输出结果 只有满足 HA VING 短语指定条件的组才输出 HA VING 短语与 WHERE 子句的区别:作用对象不同 WHERE 子句作用于基表或视图,从中选择满足条件的元组。HA VING 短语作用于组,从中选择满足条件的组。连接查询 同时涉及多个表的查询称为连接查询 用来连接两个表的条件称为连接条件或连接谓词 一般格式:.比较运算符:=、=、=、!=.BETWEEN.AND.连接字段 连接谓词中的列名称为连接字段 连接条件中的各连接字段类型必须是可比的,但不必是相同的连接操作的执行过程 嵌套循环法 (NESTED-LOOP)首先在表 1 中找到第一个元组,然后从
40、头开始扫描表 2,逐一查找满足连接件的元组,找到后就将表 1 中的第一个元组与该元组拼接起来,形成结果表中一个元组。表 2 全部查找完后,再找表 1 中第二个元组,然后再从头开始扫描表 2,逐一查找满足 连接条件的元组,找到后就将表 1 中的第二个元组与该元组拼接起来,形成结果表中 一个元组。重复上述操作,直到表 1 中的全部元组都处理完毕 排序合并法 常用于=连接 首先按连接属性对表 1 和表 2 排序 对表 1 的第一个元组,从头开始扫描表 2,顺序查找满足连接条件的元组,找到后就将 表 1 中的第一个元组与该元组拼接起来,形成结果表中一个元组。当遇到表 2 中第一 条大于表 1 连接字段
41、值的元组时,对表 2 的查询不再继续 找到表 1 的第二条元组,然后从刚才的中断点处继续顺序扫描表 2,查找满足连接条件的元组,找到后就将表 1 中的第一个元组与该元组拼接起来,形成结果表中一个元组。直接遇到表 2 中大于表 1 连接字段值的元组时,对表 2 的查询不再继续 重复上述操作,直到表 1 或表 2 中的全部元组都处理完毕为止 索引连接 对表 2 按连接字段建立索引 对表 1 中的每个元组,依次根据其连接字段值查询表 2 的索引,从中找到满足条件的 元组,找到后就将表 1 中的第一个元组与该元组拼接起来,形成结果表中一个元组 SQL 中连接查询的主要类型 广义笛卡尔积 等值连接(含自
42、然连接 )非等值连接查询 自身连接查询 外连接查询 复合条件连接查询 一、广义笛卡尔积 不带连接谓词的连接 很少使用 二、等值与非等值连接查询 等值连接 连接运算符为=.=.任何子句中引用表 1 和表以加也可以省略表名前缀。2 中同名属性时,都必须加表名前缀。引用唯一属性名时可 自然连接 等值连接的一种特殊情况,把目标列中重复的属性列去掉。非等值连接查询 连接运算符 不是=的连接操作 三、自身连接 一个表与其自己进行连接,称为表的自身连接 需要给表起别名以示区别 由于所有属性名都是同名属性,因此必须使用别名前缀四、外连接()外连接与普通连接的区别 普通连接操作只输出满足连接条件的元组 外连接操
43、作以指定表为连接主体,将主体表中不满足连接条件的元组一并输出在表名后面加外连接操作符(*)或(+)指定非主体表非主体表有一“万能”的虚行,该行全部由空值组成 虚行可以和主体表中所有不满足连接条件的元组进行连接 由于虚行各列全部是空值,因此与虚行连接的结果中,来自非主体表的属性值全部是空值 左外连接 外连接符出现在连接条件的左边 右外连接 外连接符出现在连接条件的右边 五、复合条件连接 WHERE 子句中含多个连接条件时,称为复合条件连接 嵌套查询概述 一个 SELECT-FROM-WHERE 语句称为一个查询块 将一个查询块嵌套在另一个查询块的 WHERE 子句或 HA VING 短语的条件中
44、的查询称为嵌套查询 子查询的限制 不能使用 ORDER BY 子句 层层嵌套方式反映了 SQL 语言的结构化 有些嵌套查询可以用连接运算替代 不相关子查询 子查询的查询条件不依赖于父查询 相关子查询 子查询的查询条件依赖于父查询 不相关子查询 是由里向外逐层处理。即每个子查询在 上一级查询处理之前求解,子查询的结果 用于建立其父查询的查找条件。相关子查询 首先取外层查询中表的第一个元组,根据它与内层查询相关的属性值处理内层查询,若 WHERE 子句返回值为真,则取此元组放入结果表;然后再取外层表的下一个元组;重复这一过程,直至外层表全部检查完为止 引出子查询的谓词 带有 IN 谓词的子查询 带
45、有比较运算符的子查询 带有 ANY 或 ALL 谓词的子查询 带有 EXISTS 谓词的子查询 一、带有谓词的子查询 二、带有比较运算符的子查询 当能确切知道内层查询返回单值时,可用比较运算符(,=,=,!=或)。与 ANY 或 ALL 谓词配合使用 三、带有或谓词的子查询 谓词语义 ANY ALL :任意一个值 :所有值 需要配合使用比较运算符 大于子查询结果中的某个值 大于子查询结果中的所有值 小于子查询结果中的某个值 值的个数 值的类型 插入子查询结果 语句格式 表名属性列,属性列 子查询;功能 将子查询结果插入指定表中 ,;子句 与插入单条元组类似 指定要插入数据的表名及属性列 属性列
46、的顺序可与表定义中的顺序不一致 没有指定属性列:表示要插入的是一条完整的元组 指定部分属性列:插入的元组在其余属性列上取空值 子查询 子句目标列必须与 子句匹配 值的个数 值的类型 修改数据 语句格式 表名 列名表达式,列名表达式 条件;功能 修改指定表中满足 子句条件的元组 三种修改方式 修改某一个元组的值 修改多个元组的值 带子查询的修改语句 ;子句 指定修改方式 要修改的列 修改后取值 子句 指定要修改的元组 缺省表示要修改表中的所有元组 在执行修改语句时会检查修改操作 是否破坏表上已定义的完整性规则 实体完整性 主码不允许修改 用户定义的完整性 约束 约束 值域约束 表名 条件;功能
47、删除指定表中满足 子句条件的元组 子句 指定要删除的元组 缺省表示要修改表中的所有元组 三种删除方式 删除某一个元组的值 删除多个元组的值 带子查询的删除语句 在执行插入语句时会检查所插元组 是否破坏表上已定义的完整性规则 参照完整性?不允许删除?级联删除 更新数据与数据一致性 在执行插入、删除、更新语句时必 须保证数据库一致性 必须有事务的概念和原子性 完整性检查和保证 视 图 视图的特点 虚表,是从一个或几个基本表(或视图)导出的表 只存放视图的定义,不会出现数据冗余 基表中的数据发生变化,从视图中查询出的数据也随之改变基于视图的操作 查询 删除 受限更新 定义基于该视图的新视图 建立视图
48、 语句格式 视图名 列名 ,列名 子查询 ;执行 语句时只是把 视图的定义存入数据字典,并不执行其中 的 语句。在对视图查询时,按视图的定义从基本表中将数据查出。组成视图的属性列名全部省略或全部指定 省略 由子查询中 目标列中的诸字段组成 明确指定视图的所有列名 某个目标列是集函数或列表达式 目标列为 多表连接时选出了几个同名列作为视图的字段 需要在视图中为某个列启用新的更合适的名字 透过视图进行增删改操作时,不得破坏视 图定义中的谓词条件 (即子查询中的条件表达式)带表达式的视图 定义一个反映学生出生年份的视图。,设置一些派生属性列 也称为虚拟列 带表达式的视图必须明确定义组成视图的各个属
49、性列名 一类不易扩充的视图 以 方式创建的视图可扩充性差,应尽可能避免 删除视图 视图名;该语句从数据字典中删除指定的视图定义 由该视图导出的其他视图定义仍在数据字典中,但已不能使用,必须显式删除删除基表时,由该基表导出的所有视图定义都必须显式删除 查询视图 从用户角度:查询视图与查询基本表相同 实现视图查询的方法 实体化视图()有效性检查:检查所查询的视图是否存在 执行视图定义,将视图临时实体化,生成临时表 查询视图转换为查询临时表 查询完毕删除被实体化的视图 临时表 视图消解法()进行有效性检查,检查查询的表、视图等是否存在。如果存在,则从数据字典中取出视图的定义 把视图定义中的子查询与用
50、户的查询结合起来,转换成等价的对基本表的查询执行修正后的查询 视图实体化法 视图消解法 更新视图 用户角度:更新视图与更新基本表相同 实现视图更新的方法 视图实体化法()视图消解法()指定 子句后 在更新视图时会进行检查,防止用户通过视图对不属于视图 X 围内的基本表数据进行更新更新视图的限制 一些视图是不可更新的,因为对这些视图的更新不能唯一地有意义地转换成对相应基本表的更 新 对两类方法均如此 允许对行列子集视图进行更新 对其他类型视图的更新不同系统有不同限制 对视图更新的限制:若视图是由两个以上基本表导出的,则此视图不允许更新。若视图的字段来自字段表达式或常数,则不允许对此视图执行 和操