数据库系统概念笔记——第六章:形式化关系查询语言

6.1 关系代数

关系代数的基本运算有:选择,投影,并,集合差,笛卡尔积,更名

除了基本运算以外,还有一些其他运算:集合交,自然连接和赋值

6.1.1 基本运算

选择,投影和更名对一个关系进行运算,因此称为一元运算

其它的称为二元运算,对两个关系进行运算

1.选择运算

选择运算选出满足特定条件的元组,使用符号σ来表示选择
在这里插入图片描述
比如
在这里插入图片描述
例:查找年龄不小于20岁的男学生
在这里插入图片描述
通常,我们还可以使用=,<,> 等逻辑连接词作为过滤的条件

2.投影运算

投影用大写希腊字母Π(PI)表示,从关系的若干列中取若干列得到一个新的关系。

注意:投影的结果自动去重
在这里插入图片描述
例:查询所有学生的姓名和年龄
在这里插入图片描述
例:查询001号学生所选修的课程号
在这里插入图片描述

3.关系运算的组合

关系运算的组合即将多个代数运算组合成一个关系代数表达式

4.并运算

并运算:获取所有至少出现在两个关系之一的元组集合

注意:两个关系R与S若进行并运算,则它们一定是相容

相容:

  1. 关系R与S的属性数目必须相同(列数相同)
  2. 对 ∀i,R中第i个属性的域必须和S的第i个属性的域相同

比如以下两个关系做并运算的结果
在这里插入图片描述
例:查询选修了c1号或c2号课程的学生学号
在这里插入图片描述
5.集合差运算

差运算:求出所有出现在一个关系而不再另一关系中的元组集合

注意:两个关系必须是相容的

比如:
在这里插入图片描述
6.笛卡尔积运算

笛卡尔积用”x“表示,可以将任意两个关系的信息组合组合在一起。将关系r1和关系r2的笛卡尔积写作 r1 x r2

例:没有重名列的情况
在这里插入图片描述
有重名列的情况
在这里插入图片描述
运算结果的命名:关系名.属性名

例:查询软件学院学生的选课情况
要求写出关系模式:(sno,sname,cno,score)
在这里插入图片描述
结果为:
在这里插入图片描述

7.更名运算

(1)将名字x赋给关系表达式E的运算结果
在这里插入图片描述
(2)将名字x赋给关系表达式E的运算结果,并将各属性名改为A1,A2,A3…
在这里插入图片描述
例:查询数学成绩比王红同学高的学生姓名
在这里插入图片描述
结果:
在这里插入图片描述
例:基于关系customer(name,street,city),实现下列查询:查询所有与smith居住在同一城市同一街道的客户
在这里插入图片描述
从父子关系表
在这里插入图片描述
(1)查询祖孙关系
这里的p表示parent表
在这里插入图片描述
(2)查询三代以内的祖孙关系
在这里插入图片描述

6.1.2 关系代数的形式化定义

关系代数中一般的表达式都是由更小的子表达式构成的,假设E1,E2都是关系代数表达式
则以下都是关系代数表达式
在这里插入图片描述

6.1.3 附加的关系代数运算

1.集合交运算

直接上例子
在这里插入图片描述
例:查询同时选修了c1号和c2号的学生学号
在这里插入图片描述

2.Θ连接(了解)

定义:从两个关系的笛卡尔积中选取给定属性间满足一定条件的元组
在这里插入图片描述
A,B位R和S上度数相等且可比的属性集合
Θ为比较运算符,当Θ为等号时称为等值连接

例:
在这里插入图片描述
3.自然连接运算

从两个关系的笛卡尔积中选取在相同属性列B上取值相等的元组,并去掉重复的属性

比如:
在这里插入图片描述
例:查询001号学生所在院系的编号和名称
由于学生表和院系表中都有dno这个属性,因此采用自然连接即可
在这里插入图片描述
多个属性自然连接
在这里插入图片描述
4.除运算

象集的概念
在这里插入图片描述
举例:
在这里插入图片描述
除法的概念
在这里插入图片描述
例1:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
例2:
在这里插入图片描述
此时:
在这里插入图片描述
例3:查询选修了全部课程的学生的学号

使用除运算:
在这里插入图片描述
不使用除运算:
在这里插入图片描述
例4:查询至少选修了c1和c2课程的学生学号
在这里插入图片描述
5.赋值运算(了解,用得比较少)

有时通过给临时关系变量赋值的方法来写关系代数表达式会很方便
在这里插入图片描述
例:
在这里插入图片描述
6.外连接运算

外连接是对连接运算的扩展,可以处理空值的情况

外连接与自然连接运算相似,不同之处在于它在结果中创建带空值的元组,以保留在连接中丢失的那些元组

左外连接,右外连接和全外连接:
在这里插入图片描述
例:左外连接的结果
在这里插入图片描述
例:右外连接的结果
在这里插入图片描述
例:全外连接的结果
在这里插入图片描述

6.1.4 扩展的关系代数运算

1.广义投影(了解)

定义:投影列表中使用算数表达式对投影进行拓展
在这里插入图片描述
例:
在这里插入图片描述
这里使用了 sal*5/100 这个算数表达式

2.聚集函数

(1)求和函数sum( )

例:
在这里插入图片描述
(2)计算平均值:avg( )
在这里插入图片描述

(3)计算最大值:max( )

(4)计算最小值:min( )
在这里插入图片描述
(5)计数:count( )
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
(6)分组函数

将一个关系中的元组分为若干组,对每一组使用聚集函数

格式:
在这里插入图片描述
在这里插入图片描述
Gi是用于分组的属性,Fi是聚集函数,Ai是属性名

例:
在这里插入图片描述

6.2 元组关系演算

元组关系演算是非过程化的查询语言。它只描述所需信息,而不给出获得该信息的具体过程

元组关系演算种的查询表达式为:{ t | P ( t ) }
表示使谓词P为真的元组t的集合

用t[A]表示元组t在属性A上的值
用t∈R表示元组t在关系R中

常用表达式:
在这里插入图片描述

6.2.1 查询示例

例1:
在这里插入图片描述
例2:
在这里插入图片描述
例3:
在这里插入图片描述
对于关系:S(sno,sname,sex,age,dno)

在这里插入图片描述

6.2.2 形式化定义

在这里插入图片描述
例:查询d1学院或者选修了c1课程的学生学号(两张表以上查询)
在这里插入图片描述
例:查询软件学院老师的姓名
在这里插入图片描述
例:查询未选课的学生姓名
在这里插入图片描述
例:查询选修了002号学生选修的全部课程的学生学号
在这里插入图片描述
在这里插入图片描述

6.2.3 表达式的安全性

元组关系演算有可能会产生无限关系,这样的表达式是不安全的
如{t | ┑(t ∈ R)},求所有不在R中的元组,这样的表达式就会产生无穷多的元组

引入公式P的域概念,用dom§表示
在这里插入图片描述
例:
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_46841376/article/details/115035300
今日推荐