关系运算(操作)包括投影、选择和连接。
1 . 投影
投影操作是指从一个或多个关系中选择若干个属性组成新的关系。投影操作取的是垂直方向上关系的子集(列),即投影是从关系中选择列。投影可用于变换一个关系中属性的顺序。
2 . 选择
选择操作是指从关系中选择满足一定条件的元组。选择取的是水平方向上关系的子集(行)。
【例2 -8 】 关系student如表2-11所示,在此关系上的投影操作和选择操作示例如表2-12和表2-13。
表2 -1 1 关系student
1)从关系student中选择部分属性构成新的关系st1的操作称为投影,关系st1如表2-12所示。
表2 -1 2 关系st1
2)从关系student中选择部分元组构成新的关系st2的操作称为选择,关系st2如表2-13所示。
表2 -1 3 关系st2
3 . 连接
选择操作和投影操作都是对单个关系进行的操作。在有的时候,需要从两个关系中选择满足条件的元组数据,对两个关系在水平方向上进行合作。连接操作即是这样一种操作形式,它是两个关系的积、选择和投影的组合。连接操作是从两个关系的笛卡儿积中选择属性间满足一定条件的元组的运算。连接也称为θ连接,θ表示连接的条件(比较运算),当θ比较运算为“=”运算时,连接称为等值连接。
自然连接是一种特殊的等值连接,它是在两个关系的相同属性上进行比较(等值比较)运算的结果中,去除重复属性而得到的结果。
等值连接和自然连接是连接操作中两种重要的连接操作。
【例2 -9 】 关系A(如表2-14所示)与关系B(如表2-15所示)的等值连接,结果如表2-16所示。
表2 -1 4 关系A
表2 -1 5 关系B
表2 -1 6 关系A与关系B的等值连接
【例2 -1 0】 关系A(如表2-14所示)与关系B(如表2-15所示)的自然连接,结果如表2-17所示。
表2 -1 7 关系A与关系B的自然连接
这种连接运算在关系数据库中为INNER JOIN运算,称为内连接。
关系A和关系B进行自然连接时,连接的结果是由关系A和关系B公共属性(上述例题中为D属性)值相等的元组构成了新的关系,公共属性值不相等的元组不出现在结果中,被筛选掉了。如果在自然连接结果构成的新关系中,保留不满足条件的元组(公共属性值不相等的元组),在新增属性值填入NULL,就构成了左外连接、右外连接和外连接。
(1)左外连接
左外连接又称左连接,即以连接的左关系为基础关系,根据连接条件,连接结果中包含左边表的全部行(不管右边的表中是否存在与它们匹配的行),以及右边表中全部匹配的行。
连接结果中除了在连接条件上的内连接结果之外,还包括左边关系A在内连接操作中不相匹配的元组,而关系B中对应的属性赋空值。
【例2 -1 1】 关系A与关系B的左外连接,结果如表2-18所示。
表2 -1 8 关系A与关系B的左外连接
(2)右外连接
右外连接又称右连接,即以连接的右关系为基础关系,根据连接条件,连接结果中包含右边表的全部行(不管左边的表中是否存在与它们匹配的行),以及左边表中全部匹配的行。
连接结果中除了在连接条件上的内连接结果之外,还包括右边关系B在内连接操作中不相匹配的元组,而关系A中对应的属性赋空值。
【例2 - 12】 关系A与关系B的右外连接,结果如表2-19所示。
表2 - 19 关系A与关系B的右外连接
(3)全外连接
全外连接又称全连接,是左外连接和右外连接的组合应用。连接结果中包含关系A、关系B的所有元组,不匹配的属性均赋空值。
【例2 - 13】 关系A与关系B的全连接,结果如表2-20所示。
表2 - 20 关系A与关系B的全连接
在以后的章节中将结合具体实例讨论与关系数据操作有关的命令。
至此,本书已经讨论了实际问题的建模方法,当一个问题的关系模型建立之后,这个关系模型在一个具体的DBMS中是如何实现的,包括数据结构的实现、数据完整性规则的实现和数据操作的实现,将在以后的章节中说明。