选择运算实际上是从关系R中选取使逻辑表达式F为真的元组,这是从行的角度进行的运算。
例题1:查询信息系(IS系)的全体学生
例题2:查询年龄小于20岁的学生
2. 投影(基本运算)
关系R上的投影是从R中选择出若干属性列组成新的关系。记作:
其中A为R中的属性列。
投影操作是从列的角度进行的运算。
例题1:查询学生的姓名和所在系,即求 Student 关系上学生姓名和所在系两个属性上的投影。
如果选择多个属性,多个属性之间使用逗号进行分隔
投影之后不仅取消了原关系中的某些列,而且还可能取消某些元组,因为取消了某些属性列之后,就可能出现重复行,应该取消这些完全相同的行。
例题2:查询学生关系Student中都有哪些系,即查询关系 Student 上所在系属性上的投影。
结果如图所示。Student关系原来有4个元组,而投影结果取消了重复的CS元组,因此只有三个元组。
3. 连接(非基本运算)
连接也称为 θ 连接。
连接是从两个关系的笛卡儿积中选取属性间满足一定条件的元组。记作:
其中,A和B分别为R和S上列数相等且可比的属性组,θ 是比较运算符。
连接运算从R和S的笛卡儿积 R X S 中选取R关系在A属性组上的值与S关系在B属性组上的值满足比较关系 θ 的元组。
连接运算中有两种最为重要也最为常用的连接,
- 等值连接
- 自然连接
θ 为“=” 的连接运算称为 等值连接 。它是从关系R与S的广义笛卡儿积中选取A、B属性值相等的那些元组,即等值连接为:
自然连接是一种特殊的等值连接。它要求两个关系中进行比较的分量必须是同名的属性组,并且在结果中把重复的属性列去掉。即若R和S中具有相同的属性组B,U为R和S的全体属性的集合,则自然连接可记作:
一般的连接操作是从行的角度进行运算,但自然连接还需要取消重复列,所以是同时从行和列的角度进行运算。
例题:
在进行连接时,被舍弃的元组(即没有在结果中的元组)称为悬浮元组。
如果把悬浮元组也保存在结果关系中,而在其他属性上填空值(NULL),那么这种连接就叫做外连接,记作
注意符号两边有小突出
如果只保留左边关系R中的悬浮元组就叫做左外连接,记作
注意只有左边有小突出
如果只保留右边关系S中的悬浮元组就叫做右外连接,记作
注意只有右边有小突出
在图2.8中,图(a)是图2.7中的关系R和关系S的外连接,图(b)是左外连接,图©是右外连接。
图2.7中的关系R和关系S
图2.8
4. 除运算(非基本运算)
设关系R除以关系S的结果为关系T,则T包含所有在R但不在S中的属性及其值,且T的元组与S的元组的所有组合都在R中。
下面用象集来定义除法:
给定关系R(X,Y)和S(Y,Z),其中X、Y、Z为属性组。R中的Y与S中的Y可以有不同的属性名,但必须出自相同的域集。
R与S的除运算得到一个新的关系P(X),P是R中满足下列条件的元组在X属性列上的投影:
元组在X上分量值 x 的象集Y 包含 S在Y上投影的集合。记作
其中Yx为 x 在R中的象集,x = tr[X]。
除操作是同时从行和列角度进行运算。
例题1:
例题2:
使用除运算的场景:“查询…全部 / 所有的…”的问题。如,“查询选修了所有课程的学生的学号”。
注意,要与“查询全部 / 所有的…”进行区分,如,“查询所有信息系的学生”。
2.4.3 小结
本节介绍了8种关系代数运算,其中并、差、笛卡儿积、选择和投影这5种运算为基本的运算。其他三种运算,即交、连接和除,均可以用这5种基本运算来表达。
关系代数中,这些运算经有限次复合后形成的表达式称为关系代数表达式。