1.2.2 关系运算
关系运算是对关系数据库的数据操纵,主要是从关系中查询需要的数据。关系的基本运算分为两类,一类是传统的集合运算,包括并、交、差等;另一类是专门的关系运算,包括选择、投影、连接等。关系运算的操作对象是关系,关系运算的结果仍然是关系。
1.传统的集合运算
传统的集合运算要求两个关系的结构相同,执行集合运算后,得到一个结构相同的新关系。
对于任意关系R和关系S,它们具有相同的结构即关系模式相同,而且相应的属性取自同一个域。那么,传统的集合运算定义如下。
1)并
R并S,R或S两者中所有元组的集合。一个元组在并集中只出现一次,即使它在R和S中都存在。
例如,把学生关系R和S分别存放2个班的学生,把一个班的学生记录追加到另一个班的学生记录后边,进行的是并运算。
2)交
R交S,R和S中共有的元组的集合。
例如,有参加计算机兴趣小组的学生关系R和参加象棋兴趣小组的学生关系S,求既参加计算机兴趣小组又参加象棋兴趣小组的学生,就要进行交运算。
3)差
R差S,在R中而不在S中的元组的集合。注意R差S不同于S差R,后者是在S中而不在R中的元素的集合。
例如,有参加计算机兴趣小组的学生关系R和参加象棋兴趣小组的学生关系S,求参加了计算机兴趣小组但没有参加象棋兴趣小组的学生,就要进行差运算。
2.专门的关系运算
1)选择
从关系中找出满足条件元组的操作称为选择。选择是从行的角度进行运算的,在二维表中抽出满足条件的行。例如,在学生成绩的关系1中找出“一班”的学生成绩,并生成新的关系2,就应当进行选择运算,如图1.16所示。
2)投影
从关系中选取若干个属性构成新关系的操作称为投影。投影是从列的角度进行运算的,选择某些列的同时丢弃了某些列。例如,在学生成绩的关系1中去除掉成绩列,并生成新的关系2,就应当进行投影运算,如图1.17所示。

图1.16 选择运算

图1.17 投影运算
3)连接
连接指将多个关系的属性组合构成一个新的关系。连接是关系的横向结合,生成的新关系中包含满足条件的元组。例如关系1和关系2进行连接运算,得到关系3,如图1.18所示。在连接运算中,按字段值相等执行的连接称为等值连接,新关系中重复字段只出现一次的连接称为自然连接,如图1.19所示。自然连接是一种特殊的等值连接,是去掉重复字段的连接,是构造新关系的有效方法,是最常用的连接运算。

图1.18 连接运算

图1.19 自然连接运算