理解内连接、外连接、左连接、右连接、交叉连接、全连接、自身连接

〇、表之间的连接查询分为内连和外连

  1、内连包括:内连(INNER JOIN)、自身连接、交叉连接(CROSS JOIN

  2、外连包括:左连(LEFT JOIN、右连(RIGHT JOIN全连接(FULL JOIN

  3、对于全连接、交叉连接暂时按上述类别划分,如有错误请指出。

一、内连

  1、内连是最常用的表之间的连接查询;

  2、语法SELECT 列名1,列名2 FROM 表名1 INNER JOIN 表名2 ON  条件表达式;

  3、INNER关键字可以省略;

  4、内连接只返回两个表中连结字段相等的行

二、左连

  1、语法SELECT 列名1,列名2 FROM 表名1 LEFT JOIN 表名2 ON  条件表达式;

  2、左连接返回包括左表中的所有记录和右表中连结字段相等的记录

三、右连

  1、语法SELECT 列名1,列名2 FROM 表名1  RIGHT JOIN 表名2 ON  条件表达式;

  2、右连接返回包括右表中的所有记录和左表中连结字段相等的记录

四、交叉连接

  1、语法SELECT 列名1,列名2 FROM 表名1   CROSS JOIN 表名2 ;(注意:交叉连接不能有条件表达式)

  2、在内连接的基础上,还包含两个表中所有不符合条件的数据行,并在其中的左表、和右表列填写NULL,即两个表的笛卡尔积

五、全连接

  1、语法SELECT 列名1,列名2 FROM 表名1  FULL JOIN 表名2 ON  条件表达式;

  2、在内连接的基础上,还包含两个表中所有不符合条件的数据行,并在其中的左表、和右表列填写NULL

六、自身连接

  1、语法SELECT 列名1,列名2 FROM 表名1  JOIN 表名1 ON  条件表达式;

  2、自身连接是指同一个表自己与自己进行连接。这种一元连接通常用于从自反关系(也称作递归关系)中抽取数据。

示例:

表A:

aID   aNum

1     a1

2     a2

3     a3

4     a4

 

表B:

  bID   bName

1     b1

2     b2

3     b3

7     b7

 

join:select * from A join B on A.aID=B.bID

结果如下:

aID   aNum   bID   bName

1     a1    1     b1

2     a2    2     b2

3     a3    3     b3

     

left joinselect * from A left join B on A.aID=B.bID

结果如下:

aID   aNum   bID   bName

1     a1    1     b1

2     a2    2     b2

3     a3    3     b3

  4       a4    null    null

right joinselect * from A right join B on A.aID=B.bID

结果如下:

aID   aNum   bID   bName

1     a1    1     b1

2     a2    2     b2

3     a3    3     b3

null    null    7         b7

至于交叉连接、全连接、自身连接就不再举例,可以自己试试。

原文地址:https://www.cnblogs.com/xiesong/p/5546108.html