联接
数据库中的联接语句用 于将数据库中的两个或多个表根据联接条件组合起来。由"联接"生成的集合, 可以被保存为表,或者当成表来使用。
联接语句的含义是把两张表的属性通过它们的值组合在一起。数据库中的联接类型一般包括内联接(Inner-Join),外联接(Outer-Join),Semi 联接(Semi-Join)和 Anti 联接(Anti-Join)。其中 Semi-Join 和 Anti-Join 都是通过子查询改写得到,SQL 本身并没有表述 Anti-Join 和 Semi-Join 的语法。
联接条件
联接条件可以分为等值联接(例如 t1.a = t2.b)和非等值联接(例如 t1.a < t2.b)。相比于非等值联接条件,等值联接条件的一个好处是允许数据库中使用高效的联接算法,例如 Hash Join 和 Merge-Sort Join。
Self-Join
Self-Join 是指表与自身进行联接的 Join 操作。下面展示了一个 Self-Join 的例子。
CREATE TABLE t1(a INT PRIMARY KEY, b INT, c INT);
Query OK, 0 rows affected
SELECT * FROM t1 AS ta, t1 AS tb WHERE ta.b = tb.b;