数据库系统概论复习资料(王珊版)45227.pdf

上传人:得** 文档编号:79343308 上传时间:2023-03-21 格式:PDF 页数:92 大小:4.30MB
返回 下载 相关 举报
数据库系统概论复习资料(王珊版)45227.pdf_第1页
第1页 / 共92页
数据库系统概论复习资料(王珊版)45227.pdf_第2页
第2页 / 共92页
点击查看更多>>
资源描述

《数据库系统概论复习资料(王珊版)45227.pdf》由会员分享,可在线阅读,更多相关《数据库系统概论复习资料(王珊版)45227.pdf(92页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

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 中有 n 个实体(n0)与之联系,反之,对于实体集 B 中的

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

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

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

9、新 数据操作是集合操作,操作对象和操作结果都是关系,即若干元组的集合 存取路径对用户隐蔽,用户只要指出“干什么”,不必详细说明“怎么干”关系模型的完整性约束 实体完整性 参照完整性 用户定义的完整性 关系数据模型的存储结构 表以文件形式存储 有的 DBMS 一个表对应一个操作系统文件 有的 DBMS 自己设计文件结构 关系模型的优缺点 优点 建立在严格的数学概念的基础上 概念单一。数据结构简单、清晰,用户易懂易用 实体和各类联系都用关系来表示。对数据的检索结果也是关系。关系模型的存取路径对用户透明 具有更高的数据独立性,更好的安全保密性 简化了程序员的工作和数据库开发建立的工作 缺点 存取路径

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

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

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

13、重复 2)元组(Tuple)笛卡尔积中每一个元素(d1,d2,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)1)关系 D1D2Dn的子集叫作在域D1,D2,Dn上的关系,表示为 R(D1,D2,Dn)R:关系名 n:关系的目或度(Degree)2)元组

14、 关系中的每个元素是关系中的元组,通常用t表示。3)单元关系与二元关系 当n=1 时,称该关系为单元关系(Unary relation)。当n=2 时,称该关系为二元关系(Binary relation)4)关系的表示 关系也是一个二维表,表的每行对应一个元组,表的每列对应一个域。5)属性 关系中不同列可以对应相同的域,为了加以区分,必须对每列起一个名字,称为属性(Attribute)。n目关系必有n个属性。6)码 候选码(Candidate key)若关系中的某一属性组的值能唯一地标识 一个元组,则称该属性组为候选码 在最简单的情况下,候选码只包含一个属性。称为全码(All-key)在最极端

15、的情况下,关系模式的所有属性组 是这个关系模式的候选码,称为全码(All-key)主码 若一个关系有多个候选码,则选定其中一个 为主码(Primary key)主码的诸属性称为主属性(Prime attribute)。不包含在任何侯选码中的属性称为非码属性(Non-key attribute)7)三类关系 基本关系(基本表或基表)实际存在的表,是实际存储数据的逻辑表示 查询表 查询结果对应的表 视图表 由基本表或其他视图表导出的表,是虚表,不对 应实际存储的数据 基本关系的性质 列是同质的(Homogeneous)每一列中的分量是同一类型的数据,来自同 一个域 不同的列可出自同一个域 其中的每

16、一列称为一个属性 不同的属性要给予不同的属性名 列的顺序无所谓 列的次序可以任意交换 遵循这一性质的数据库产品(如 ORACLE),增加新属性时,永远是插至最后一列 但也有许多关系数据库产品没有遵循这一 性质,例如 FoxPro 仍然区分了属性顺序 任意两个元组不能完全相同 由笛卡尔积的性质决定 但许多关系数据库产品没有遵循这一性质。例如:Oracle,FoxPro 等都允许关系表中存在两个完全相同 的元组,除非用户特别定义了相应的约束条件。行的顺序无所谓 行的次序可以任意交换 遵循这一性质的数据库产品(如 ORACLE),插入一个元组时永远插至最后一行 但也有许多关系数据库产品没有遵循这一性

17、 质,例如 FoxPro 仍然区分了元组的顺序 分量必须取原子值 每一个分量都必须是不可分的数据项。这是规范条件中最基本的一条 关系模式(Relation Schema)是型 关系是值 关系模式是对关系的描述 元组集合的结构 属性构成 属性来自的域 属性与域之间的映象关系 元组语义以及完整性约束条件 属性间的数据依赖关系集合 定义关系模式 关系模式可以形式化地表示为:R(U,D,dom,F)R 关系名 U 组成该关系的属性名集合 D 属性组U中属性所来自的域 dom 属性向域的映象集合 F 属性间的数据依赖关系集合 关系模式通常可以简记为 R(U)或 R(A1,A2,An)R 关系名 A1,A

18、2,An 属性名 注:域名及属性向域的映象常常直接说明为 属性的类型、长度 关系模式 对关系的描述 静态的、稳定的 关系 关系模式在某一时刻的状态或内容 动态的、随时间不断变化的 关系模式和关系往往统称为关系 通过上下文加以区别 1.关系数据库 在一个给定的应用领域中,所有实体及实 体之间联系的关系的集合构成一个关系数 据库。2.关系数据库的型与值 关系数据库也有型和值之分 关系数据库的型称为关系数据库模式,是对关系数据库的描述 若干域的定义 在这些域上定义的若干关系模式 关系数据库的值是这些关系模式在某一时刻对应的关系的集合,通常简称为关系数据库 3 关系的完整性 关系模型的完整性规则是对关

19、系的某种约束条件。关系模型中三类完整性约束:实体完整性 参照完整性 用户定义的完整性 实体完整性和参照完整性是关系模型必须满足的完整性约束条件,被称作是关系的两个 不变性,应该由关系系统自动支持。实体完整性 实体完整性规则(Entity Integrity)若属性A是基本关系R的主属性,则属性 A不能取空值 关系模型必须遵守实体完整性规则的原因(1)实体完整性规则是针对基本关系而言的。一个基本表通常对应现实世界的一个实体集或多对多联系。(2)现实世界中的实体和实体间的联系都是可区分的,即它们具有某种唯一性标识。(3)相应地,关系模型中以主码作为唯一性标识。关系模型必须遵守实体完整性规则的原因(

20、续)(4)主码中的属性即主属性不能取空值。空值就是“不知道”或“无意义”的值。主属性取空值,就说明存在某个不可标识的实体,即存在不可区分的实体,这与第(2)点相矛盾,因此这个规则称为实体完整性。注意 实体完整性规则规定基本关系的所有 主属性都不能取空值 参照完整性 1.关系间的引用 2.外码 3.参照完整性规则 1.关系间的引用 在关系模型中实体及实体间的联系都是用 关系来描述的,因此可能存在着关系与关 系间的引用。2外码(Foreign Key)设F是基本关系R的一个或一组属性,但不 是关系R的码。如果 F 与基本关系S的主码 Ks 相对应,则称 F 是基本关系R的外码 基本关系R 称为参照

21、关系(Referencing Relation)基本关系S 称为被参照关系(Referenced Relation)或目标关系(Target Relation)。说明 关系R和S不一定是不同的关系 目标关系S的主码 Ks 和参照关系的外码 F 必须定义在同一个(或一组)域上 外码并不一定要与相应的主码同名 当外码与相应的主码属于不同关系时,往往 取相同的名字,以便于识别 3.参照完整性规则 若属性(或属性组)F是基本关系R的外码 它与基本关系S的主码 Ks 相对应(基本关 系R和S不一定是不同的关系),则对 于R中每个元组在F上的值必须为:或者取空值(F的每个属性值均为空值)或者等于S中某个元

22、组的主码值。2.3.3 用户定义的完整性 用户定义的完整性是针对某一具体关系数据库的约束条件,反映某一具体应用所涉及的数据必须满足的语义要求。关系模型应提供定义和检验这类完整性的机制,以便用统一的系统的方法处理它们,而不要由应用程序承担这一功能。Operation 运算,操作 Operator 算子 Operand 操作数 1.关系代数 一种抽象的查询语言 用对关系的运算来表达查询 2关系代数运算的三个要素 运算对象:关系 运算结果:关系 运算符:四类 关系代数运算符 集合 运算 符 -并 差 交 广义笛卡尔积 比较运算符 大于 大于等于 小于 小于等于 等于 不等于 专门的关系 运算符 选择

23、 投影 连接 除 逻辑运算符 非 与 或 4关系代数运算的分类 传统的集合运算 并、差、交、广义笛卡尔积 专门的关系运算 选择、投影、连接、除 5表示记号 (1)R,tR,tAi 设关系模式为R(A1,A2,An)它的一个关系设为R。tR表示t是R的一个元组 tAi则表示元组t中相应于属性Ai的一个分量 (2)A,tA,A 若A=Ai1,Ai2,Aik,其中Ai1,Ai2,Aik是A1,A2,An中的一部分,则A称为属性列或域列。tA=(tAi1,tAi2,tAik)表示元组t在属性列A上诸分量的集合。A则表示A1,A2,An中去掉Ai1,Ai2,Aik后剩余的属性组。(3)tr ts R为n

24、目关系,S为m目关系。tr R,tsS,tr ts 称为元组的连接。它是一个n+m列的元组,前n个分量为R中的一个n元组,后m个分量为S中的一个m元组。4)象集Zx 给定一个关系R(X,Z),X和Z为属性组。当tX=x时,x在R中的象集(Images Set)为:Zx=tZ|t R,tX=x 它表示R中属性组X上值为x的诸元组在Z上分量的集合。1.并(Union)R和S 具有相同的目n(即两个关系都有n个属性)相应的属性取自同一个域 RS 仍为n目关系,由属于R或属于S的元组组成 RS=t|t Rt S R和S 具有相同的目n 相应的属性取自同一个域 R-S 仍为n目关系,由属于R而不属于S的

25、所有元组组成 R-S=t|tRtS R和S 具有相同的目n 相应的属性取自同一个域 RS 仍为n目关系,由既属于R又属于S的元组组成 RS=t|t Rt S RS=R(R-S)4.广义笛卡尔积(Extended Cartesian Product)R n目关系,k1 个元组 S m目关系,k2 个元组 RS 列:(n+m)列的元组的集合 元组的前n列是关系R的一个元组 后m列是关系S的一个元组 行:k1k2 个元组 RS=tr ts|tr R tsS 专门的关系运算 1.选择(Selection)1)选择又称为限制(Restriction)2)选择运算符的含义 在关系R中选择满足给定条件的诸元

26、组 F(R)=t|tRF(t)=真 F:选择条件,是一个逻辑表达式,基本形式为:(X1Y1 )(X2Y2 ):比较运算符(,或)X1,Y1 等:属性名、常量、简单函数;属性名也可以用它的序号来代替;:逻辑运算符(或):表示任选项 :表示上述格式可以重复下去 3)选择运算是从行的角度进行的运算 2.投影(Projection)1)投影运算符的含义 从R中选择出若干属性列组成新的关系 A(R)=tA|t R A:R中的属性列 2)投影操作主要是从列的角度进行运算 但投影之后不仅取消了原关系中的某些列,而且还可能取消某些元组(避免重复行)3.连接(Join)1)连接也称为连接 2)连接运算的含义 从

27、两个关系的笛卡尔积中选取属性间满足一定条件的元组 R S=|tr Rts StrAtsB A和B:分别为R和S上度数相等且可比的属性组 :比较运算符 连接运算从R和S的广义笛卡尔积RS中选取(R关系)在A属性组上的值与(S关系)在B属性组上值满足比较关系的元组。3)两类常用连接运算 等值连接(equijoin)什么是等值连接 为“”的连接运算称为等值连接 等值连接的含义 从关系R与S的广义笛卡尔积中选取A、B属性值相等的那些元组,即等值连接为:R S=|tr Rts StrA=tsB 4)一般的连接操作是从行的角度进行运算。自然连接还需要取消重复列,所以是同时从行和列的角度进行运算。4)象集Z

28、 给定一个关系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可以有不同的属性名,但必须出自相同 的域集。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)除操作是同时从行和列角度进行运算 第三章 关系数

29、据库标准语言 SQL SQL 概述 SQL 的特点 1.综合统一 2.高度非过程化 3.面向集合的操作方式 4.以同一种语法结构提供两种使用方法 5.语言简洁,易学易用 5.语言简捷,易学易用 表 3.1 SQL 语言的动词 SQL 功 能 动 词 数 据 定 义 CREATE,DROP,ALTER 数 据 查 询 SELECT 数 据 操 纵 INSERT,UPDATE DELETE 数 据 控 制 GRANT,REVOKE 数 据 定 义 3.2.1 定义语句格式 CREATE TABLE (,);:所要定义的基本表的名字 :组成该表的各个属性(列):涉及相应属性列的完整性约束条件 :涉及

30、一个或多个属性列的完整性约束条件 常用完整性约束 主码约束:PRIMARY KEY 唯一性约束:UNIQUE 非空值约束:NOT NULL 参照完整性约束 三、删除基本表 DROP TABLE;基本表删除 数据、表上的索引都删除 表上的视图往往仍然保留,但 无法引用 表 3.2 SQL 的数据定义语句 操 作 方 式 操 作 对 象 创 建 删 除 修 改 表 CREATE TABLE DROP TABLE ALTER TABLE 视 图 CREATE VIEW DROP VIEW 索 引 CREATE INDEX DROP INDEX 删除基本表时,系统会从数据字典中删去有关该 基本表及其索

31、引的描述 (标准中没有,认为表建立后就永久存在)二、修改基本表 ALTER TABLE ADD 完整性约束 DROP MODIFY ;:要修改的基本表 ADD 子句:增加新列和新的完整性约束条件 DROP 子句:删除指定的完整性约束条件 MODIFY 子句:用于修改列名和数据类型 ALTER TABLE Student ADD Scome DATE;不论基本表中原来是否已有数据,新增加的列一律为空值。删除属性列 直接/间接删除 把表中要保留的列及其内容复制到一个新表中 删除原表 再将新表重命名为原表名 直接删除属性列:(新)例:ALTER TABLE Student Drop Scome;AL

32、TER TABLE Student MODIFY Sage SMALLINT;注:修改原有的列定义有可能会破坏已有数据 建立与删除索引 建立索引是加快查询速度的有效手段 建立索引 DBA 或表的属主(即建立表的人)根据需要建立 有些 DBMS 自动建立以下列上的索引 PRIMARY KEY UNIQUE 维护索引 DBMS 自动完成 使用索引 DBMS 自动选择是否使用索引以及使用哪些索引 一、建立索引 语句格式 CREATE UNIQUE CLUSTER INDEX ON(,);用指定要建索引的基本表名字 索引可以建立在该表的一列或多列上,各列名之间用逗号分隔 用指定索引值的排列次序,升序:

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

34、Sname(姓名)列上建立一个聚簇索引,而 且 Student 表中的记录将按照 Sname 值的升序存放 在一个基本表上最多只能建立一个聚簇索引 聚簇索引的用途:对于某些类型的查询,可以提高查询效率 聚簇索引的适用范围 很少对基表进行增删操作 很少对其中的变长列进行修改操作 二、删除索引 DROP INDEX;删除索引时,系统会从数据字典中删去有关该索引的描述。查 询 语句格式 SELECT ALL|DISTINCT ,FROM,WHERE GROUP BY HAVING ORDER BY ASC|DESC ;SELECT 子句:指定要显示的属性列 FROM 子句:指定查询对象(基本表或视图

35、)WHERE 子句:指定查询条件 GROUP BY 子句:对查询结果按指定列的值分组,该属性列值相等的元组为一个组。通常会在每组中作用集函数。HAVING 短语:筛选出只有满足指定条件的组 ORDER BY 子句:对查询结果表按指定列值的升序或降序排序 3.3.2 单表查询 查询仅涉及一个表,是一种最简单的查询操作 一、选择表中的若干列 二、选择表中的若干元组 三、对查询结果排序 四、使用集函数 五、对查询结果分组 查询经过计算的值 SELECT 子句的为表达式 算术表达式 字符串常量 函数 列别名 等 二、选择表中的若干元组 消除取值重复的行 查询满足条件的元组 1.消除取值重复的行 在 S

36、ELECT 子句中使用 DISTINCT 短语 假设 SC 表中有下列数据 2.查询满足条件的元组 WHERE 子句常用的查询条件(1)比较大小 在 WHERE 子句的中使用比较运算符 =,=,=,!=或,!,!,逻辑运算符 NOT +比较运算符(2)确定范围 使用谓词 BETWEEN AND NOT BETWEEN AND (3)确定集合 使用谓词 IN,NOT IN :用逗号分隔的一组取值(4)字符串匹配 NOT LIKE ESCAPE :指定匹配模板 匹配模板:固定字符串或含通配符的字符串 当匹配模板为固定字符串时,可以用=运算符取代 LIKE 谓词 用!=或 运算符取代 NOT LIK

37、E 谓词 通配符%(百分号)代表任意长度(长度可以为 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 (5)涉及空值的查询 使用谓词 IS NULL 或 IS NOT NULL “IS NULL”不能用“=NU

38、LL”代替(6)多重条件查询 用逻辑运算符 AND 和 OR 来联结多个查询条件 AND 的优先级高于 OR 可以用括号改变优先级 可用来实现多种其他谓词 NOT IN NOT BETWEEN AND 三、对查询结果排序 使用 ORDER BY 子句 可以按一个或多个属性列排序 升序:ASC;降序:DESC;缺省值为升序 当排序列含空值时 ASC:排序列为空值的元组最后显示 DESC:排序列为空值的元组最先显示 四、使用集函数 5 类主要集函数 计数 COUNT(DISTINCT|ALL*)COUNT(DISTINCT|ALL)计算总和 SUM(DISTINCT|ALL)计算平均值 AVG(D

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

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

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

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

43、接(含自然连接)非等值连接查询 自身连接查询 外连接查询 复合条件连接查询 一、广义笛卡尔积 不带连接谓词的连接 很少使用 二、等值与非等值连接查询 等值连接 连接运算符为=的连接操作 .=.任何子句中引用表 1 和表 2 中同名属性时,都必须加表名前缀。引用唯一属性名时可以加也可以省略表名前缀。自然连接 等值连接的一种特殊情况,把目标列中重复的属性列去掉。非等值连接查询 连接运算符 不是=的连接操作 三、自身连接 一个表与其自己进行连接,称为表的自身连接 需要给表起别名以示区别 由于所有属性名都是同名属性,因此必须使用别名前缀 四、外连接(Outer Join)外连接与普通连接的区别 普通连

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

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

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

47、NY 小于等于子查询结果中的某个值 =ALL 小于等于子查询结果中的所有值=ANY 等于子查询结果中的某个值 =ALL 等于子查询结果中的所有值(通常没有实际意义)!=(或)ANY 不等于子查询结果中的某个值!=(或)ALL 不等于子查询结果中的任何一个值 四、带有 EXISTS 谓词的子查询 1.EXISTS 谓词 2.NOT EXISTS 谓词 3.不同形式的查询间的替换 4.相关子查询的效率 5.用 EXISTS/NOT EXISTS 实现全称量词 6.用 EXISTS/NOT EXISTS 实现逻辑蕴函 1.EXISTS 谓词 存在量词 带有 EXISTS 谓词的子查询不返回任何数据,

48、只产生逻辑真值“true”或逻辑假值“false”。若内层查询结果非空,则返回真值 若内层查询结果为空,则返回假值 由 EXISTS 引出的子查询,其目标列表达式通常都用*,因为带 EXISTS 的子查询只返回真值或假值,给出列名无实际意义 2.NOT EXISTS 谓词 3.不同形式的查询间的替换 一些带 EXISTS 或 NOT EXISTS 谓词的子查询不能被其他形式的子查询等价替换 所有带 IN 谓词、比较运算符、ANY 和 ALL 谓词的子查询都能用带 EXISTS 谓词的子查询等价替换。5.用 EXISTS/NOT EXISTS 实现全称量词(难点)SQL 语言中没有全称量词(Fo

49、r all)可以把带有全称量词的谓词转换为等价的带有存在量词的谓词:(x)P (x(P)6.用 EXISTS/NOT EXISTS 实现逻辑蕴函(难点)SQL 语言中没有蕴函(Implication)逻辑运算 可以利用谓词演算将逻辑蕴函谓词等价转换为:p q pq 3.3.5 集合查询 标准 SQL 直接支持的集合操作种类 并操作(UNION)一般商用数据库支持的集合操作种类 并操作(UNION)交操作(INTERSECT)差操作(MINUS)1 并操作 形式 UNION 参加 UNION 操作的各结果表的列数必须相同;对应项的数据类型也必须相同 2 交操作 标准 SQL 中没有提供集合交操作

50、,但可用其他方法间接实现。3 差操作 4.对集合操作结果的排序 ORDER BY 子句只能用于对最终查询结果排序,不能对中间结果排序 任何情况下,ORDER BY 子句只能出现在最后 对集合操作结果排序时,ORDER BY 子句中用数字指定排序属性 数据更新 3.4.1 插入数据 两种插入数据方式 插入单个元组 插入子查询结果 1.插入单个元组 语句格式 INSERT INTO (,)VALUES(,)功能 将新元组插入指定表中。INTO 子句 指定要插入数据的表名及属性列 属性列的顺序可与表定义中的顺序不一致 没有指定属性列:表示要插入的是一条完整的元组,且属性列属性与表定义中的顺序一致 指

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 应用文书 > 工作报告

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com