第10章 SQL联接

考试目标

本章学习内容:

● 061.6.1 使用同等联接和非同等联接编写SELECT语句访问多个表的数据

● 061.6.2 使用自联接将表联接到自身

● 061.6.3 使用外联接查看不满足联接条件的数据

● 061.6.4 生成两个或者多个表的笛卡尔乘积

关系理论的3个支柱是选择、投影和联接。本章重点讨论联接的实际实现方式。使用联接可以将不同表或视图的行相互联系起来。联接支持暗示数据库表中存储数据的方式。许多数据模型(例如第三范式或者星形模式)已经开始使用这种特性。

有几种方法可以联接表。最常见的方法称为同等联接,该联接依据列值或者表达式的相等性将一行与另一个表中的一行或者多行关联起来,还可以使用非同等联接来联接表。在这种联接中,行与另一个表中的一行或者多行关联起来,前提是这些行的列值在由不等于运算符确定的范围之内。

另一种不常见的方法是将这些行与同一个表中的其他行关联起来。这种关联建立在列之上,这些列相互之间有逻辑关系以及层次结构关系。这种联接称为自联接。当执行同等联接和非同等联接时,会排除包含空值或者公共联接列中具有不同条目的行。如果有必要,可以使用外联接来获得单行或者孤立行。

当来自一个表的所有行联接到另一个表中的所有行时,就会形成交叉联接或者笛卡尔乘积。这种联接通常是遗漏联接条件或者联接条件不充足的结果,但有时也是故意为之。