
1.4 基本关系运算
关系数据库建立在关系模型基础之上,具有严格的数学理论基础。关系数据库对数据的操作除了包括集合代数的并、差等运算之外,更定义了一组专门的关系运算:连接、选择和投影。关系运算的特点是运算的对象和结果都是表。
1.4.1 选择
选择是单目运算,其运算对象是一个表。该运算按给定的条件,从表中选出满足条件的行形成一个新表,作为运算结果。
选择运算的记号为δF(R)。其中δ是选择运算符,下标F是一个条件表达式,R是被操作的表。
若学生情况表如表1-11所示。
表1-11 学生情况表
若要在学生情况表中找出性别为“女”且平均成绩在80分以上的行形成一个新表,则运算式为:δF(学生情况表),其中F为性别=“女”∧平均成绩≥80。该选择运算的结果如表1-12所示。
表1-12 选择运算的结果
1.4.2 投影
投影也是单目运算,该运算从表中选出指定的属性值组成一个新表,记为:∏A(R)。其中A是属性名(即列名),R是表名。
若在表1-11的学生情况表中对“姓名”和“平均成绩”投影,运算式为:∏姓名,平均成绩(学生情况表)。该运算将得到表1-13所示的表。
表的选择和投影运算分别从行和列两个方向上分割一个表,而下面要讨论的连接运算则是对两个表的操作。
表1-13 投影运算结果
1.4.3 连接
1.交叉连接
交叉连接又称笛卡尔连接,设表R和S的属性个数分别为r和s,元组个数分别为m和n,则R和S的交叉连接是一个有r+s个属性,m×n个元组的表,且每个元组的前r个属性来自R的一个元组,后s个属性来自S的一个元组,记为R×S。
若已知A表和B表,则A×B的结果如图1-7所示。
图1-7 交叉连接示例
2.内连接
(1)条件连接
条件连接是把两个表中的行按照给定的条件进行拼接而形成的新表,结果列为参与连接的两个表的所有列,记为R∞FS。其中R、S是被操作的表,F是条件。
若已知A表和B表,则A∞FB的结果如图1-8所示,其中条件为T1≥T3。
图1-8 条件连接示例
(2)自然连接
数据库应用中最常用的是“自然连接”。进行自然连接运算要求两个表有共同属性(列)。自然连接运算的结果表是在参与操作的两个表的共同属性上进行等值条件连接后,再去除重复的属性后所得的新表。自然连接运算记为:R∞S,其中R和S是参与运算的两个表。
已知A表和B表,则R∞S的结果如图1-9所示。
图1-9 自然连接示例
3.外连接
在关系R和S上作自然连接时,我们选择两个关系在公共属性上值相等的元组构成新关系的元组。此时,关系R中某些元组有可能在S中不存在公共属性上值相等的元组,造成R中这些元组的值在操作时被舍弃。由于同样的原因,S中某些元组也有可能被舍弃。如果R和S在作自然连接时,把原该舍弃的元组也保留在新关系中,同时在这些元组新增加的属性中填上空值(NULL),这种操作称为“外连接”操作。
(1)左外连接
左外连接就是在查询结果集中显示左边表中所有的记录,以及右边表中符合条件的记录。
(2)右外连接
右外连接就是在查询结果集中显示右边表中所有的记录,以及左边表中符合条件的记录。
(3)全外连接
全外连接就是在查询结果集中显示左右表中所有的记录,包括符合条件的和不符合条件的记录。
外连接示例如图1-10所示。
图1-10 外连接示例