简谈

一. 内连接(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

原文地址:https://www.cnblogs.com/Xbingbing/p/8686921.html