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