SQL语句 回顾

参考博客:https://www.cnblogs.com/yyjie/p/7788413.html

1.内连接

  inner join,这个和普通多表查询中的","没有区别。自然连接。

2.外连接

  2.3.1 左外连接 left outer join或者left join

    用左外连接查询的结果是:left outer子句中指定的左表的所有行,而不仅仅是联接列所匹配的行。如果左表的某行在右表中没有匹配行,则在相关联的结果集行中右表的所有

  选择列表列均为空值。

  2.3.2 右外连接 right out join或者right join

    右向外联接是左向外联接的反向联接。将返回右表的所有行。如果右表的某行在左表中没有匹配行,则将为左表返回空值。

  2.3.3 全外连接 full outer join或者full join

    完整外部联接返回左表和右表中的所有行。当某行在另一个表中没有匹配行时,则另一个表的选择列表列包含空值。如果表之间有匹配行,则整个结果集行包含基表的数据值。

3.交叉联接

  交叉联接返回左表中的所有行,左表中的每一行与右表中的所有行组合。交叉联接也称作笛卡尔积。
  FROM 子句中的表或视图可通过内联接或完整外部联接按任意顺序指定;但是,用左或右向外联接指定表或视图时,表或视图的顺序很重要。

例子:   
-------------------------------------------------
  a表     id   name     b表     id   job   parent_id   
              1   张3                   1     23     1   
              2   李四                 2     34     2   
              3   王武                 3     34     4       
  a.id同parent_id   存在关系   
--------------------------------------------------    
 1) 内连接   
  select   a.*,b.*   from   a   inner   join   b     on   a.id=b.parent_id       
  结果是     
  1   张3                   1     23     1   
  2   李四                  2     34     2   

  2)左连接   
  select   a.*,b.*   from   a   left   join   b     on   a.id=b.parent_id       
  结果是     
  1   张3                   1     23     1   
  2   李四                  2     34     2   
  3   王武                  null   

 3) 右连接   
  select   a.*,b.*   from   a   right   join   b     on   a.id=b.parent_id       
  结果是     
  1   张3                   1     23     1   
  2   李四                  2     34     2   
  null                       3     34     4   

 4) 完全连接   
  select   a.*,b.*   from   a   full   join   b     on   a.id=b.parent_id   
  结果是     
  1   张3                  1     23     1   
  2   李四                 2     34     2   
  null                   3     34     4   
  3   王武                 null

个人总结:左外连接left out join ,where子句不能直接放在后面,后面必须接on语句。on语句的条件不管是否正确,左侧的表tab1必须全部包括,右侧条件不满足的时候,全部置null,一般只获取左侧表的数据较多。若后面紧跟了一个where子句,是在on子句的子句上进行过滤操作,得到最后的查询结果集。

原文地址:https://www.cnblogs.com/Fantastic-Code/p/11721379.html