一、传统的集合运算
传统的集合运算有并、交、差、笛卡尔积,都比较简单。
二、专门的关系运算
专门的关系运算包括选择、投影、连接、除运算等。
1.选择(restriction)
在关系R中选择满足给定条件的诸元组,记作:
σF (R ) = {t |t ∈ R∧F (t ) = ‘真’}
F表示选择条件,是一个逻辑表达式,取值为“真”或“假”,其基本形式为:X1θY1,选择运算是从关系R中选取逻辑表达式F为真的元组,从行的角度进行运算。
例如:查询信息系(IS系)全体学生: σSdept=‘IS’ (Student)
注意:如果属性名是数字,不用加单引号
2.投影(Projection)
从R中选择出若干属性列组成新的关系,记作:
πA ( R ) = { t [A]| t ∈ R }
A表示R 中的属性列
投影操作主要是从列的角度进行运算
但投影之后不仅取消了原关系中的某些列,而且还可能取消某些元组(为了避免重复行)。
例如:查询学生的姓名和所在系:πSname,Sdept(Student)
3.连接(join)
连接也称为θ连接,从两个关系的笛卡尔积中选取属性间满足一定条件的元组
A 和B分别为R 和S 上度数相等且可比的属性组
θ是比较运算符
投影操作主要是从列的角度进行运算
1)等值连接
从关系R与S的广义笛卡尔积中选取A、B属性值相等的那些元组
2)自然连接
两个关系中进行比较的分量必须是相同的属性组,在结果中还要把重复的属性列去掉。
悬浮元组:两个关系R和S在自然连接时,关系R和S中被舍弃的元组
外连接:把悬浮元组舍弃的元组也保存到结果关系中,在其他属性上填空值(NULL)
左外连接:只保留左边的关系R中的悬浮元组
右外连接:只保留右边的关系S中的悬浮元组
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上的投影的集合
解释:
- 在关系R和S中,相同的属性组为(B, C),首先列出属性组A的所有的分量值对应的象集
a1的象集为{(b1,c2), (b2,c3), (b2,c1)}
a2的象集为{(b3,c7), (b2,c3)}
a3的象集为{(b4,c6)}
a4的象集为{(b6,c6)} - 下面观察每一个分量值对应的象集,找到哪一个包含关系S中所有属性组(B,C)上的投影的集合
S在(B,C)上的投影为{(b1,c2), (b2,c3), (b2,c1)}
观察得,只有a1的象集包含了S在(B,C)属性组上的投影
于是R÷S=a1,如图所示