一. 内连接(inner join)
内连接包括相等联接和自然联接,通常使用像 = 或 <> 之类的比较运算符。
简单地讲,内连接就是以两个表中相关联的列作为筛选条件,选出符合查询条件的所有数据行。
二. 外连接(Outer join)
外连接包括
1)LEFT JOIN或LEFT OUTER JOIN 简单地说,就是以左边表的数据行数为两个组合表的总行数,如果左边表的某一行数值没有映射到右边表的某一行,那么照样输出左边表的那一行数值,而对应右表数值相应位置的值为空值。(A: 4X3, B: 3X3, AB = 4X6)
2)RIGHT JOIN 或 RIGHT OUTER JOIN 与left join相反,就是以右边表的数据行数为两个组合表的总行数,如果右边表的某一行数值没有映射到左边表的某一行,那么照样输出右边表的那一行数值,而对应左表数值相应位置的值为空值。(A: 4X3, B: 3X3, AB = 3X6)
3)FULL JOIN 或 FULL OUTER JOIN 完整外部联接即返回左表和右表中的所有行。(A: 4X3, B: 3X3, AB = 7X6)
三. 交叉连接(Cross join)
交叉联接返回左表中的所有行,左表中的每一行与右表中的所有行组合。交叉联接也称作笛卡尔积。 (A: 4X3, B: 3X3, AB = 12X6)
例子:
--------------------------------------------------------------------------------------
A表 id name class address B表 id job parent_id
1 张3 A1 G 1 23 1
2 李四 A2 J 2 34 2
3 王武 A3 S 3 34 5
4 小红 A4 H
A.id 同 B.parent_id 存在关系
---------------------------------------------------------------------------------------
A: 4X3, B: 3X3, AB = 4X6
select * from A inner join B on A.id = B.parent id;
AB table :
id name class address id job parent_id
1 张3 A1 G 1 23 1
2 李四 A2 J 2 34 2
3 王武 A3 S 3 34 5
4 小红 A4 H null