连接条件可以分为等值连接(比如 t1.a = t2.b)和非等值连接(t1.a < t2.b)。相比于非等值连接条件,等值连接条件的一个好处是允许数据库中使用高效的连接算法,比如 Hash Join 和 Merge-Sort Join。

Self-Join

Inner-Join 是数据库中最基本的连接操作。内连接基于连接条件将两张表(如 A 和 B)的列组合在一起,产生新的结果表。查询会将 A 表的每一行和 B 表的每一行进行比较,并找出满足连接条件的组合。当连接条件被满足,A 和 B 中匹配的行会按列组合(并排组合)成结果集中的一行。连接产生的结果集,可以定义为首先对两张表做笛卡尔积(交叉连接,将 A 中的每一行和 B 中的每一行组合),然后返回满足连接条件的记录。

外连接(Outer-Join)

当 A 表和 B 表进行 left/right Semi-Join 的时候,它只返回 A/B 表中所有能够在 B/A 中找到匹配的行。Semi-Join 只能通过子查询展开得到,如下所示。

Anti 连接(Anti-Join)