SQL的联接方式

来源:互联网 发布:linux虚拟机安装mysql 编辑:程序博客网 时间:2024/05/16 23:33

1、内联接——INNER JOIN

     在结果集中只有满足匹配条件的行。

    
2、外联接

1)左外联接 ——LEFT  JOIN或LEFT OUTER JOIN    
     结果集包括  LEFT JOIN 子句中指定的左表的所有行,如果左表的某行在右表中没有匹配,则该行在结果集中没有右表的值。

2)右外联接——RIGHT  JOIN 或 RIGHT  OUTER  JOIN    
     结果集包括  RIGHT JOIN 子句中指定的右表的所有行,如果右表的某行在左表中没有匹配,则该行在结果集中没有左表的值。 
3)全联接——FULL  JOIN 或 FULL OUTER JOIN
     结果集包括左表和右表中的所有行,当一个表中的某行在另一个表中没有匹配时,则该行在结果集中没有另一表的值。
    
3、交叉联接 ——CROSS JOIN

       交叉连接不带WHERE子句,它返回被连接的两个表所有数据行的笛卡尔积,返回到结果集合中的数据行数等于第一个表中符合查询条件的数据行数乘以第二个表中符合查询条件的数据行数。


    
例子:(http://www.blogjava.net/zolly/archive/2007/10/23/SQLJION.html)

-------------------------------------------------
  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

0 0