[求助]SQL内连接与外连接有什么区别呢?求指点_MySQL, Oracle及数据库讨论区_Weblogic技术|Tuxedo技术|中间件技术|Oracle论坛|JAVA论坛|Linux/Unix技术|hadoop论坛_联动北方技术论坛  
网站首页 | 关于我们 | 服务中心 | 经验交流 | 公司荣誉 | 成功案例 | 合作伙伴 | 联系我们 |
联动北方-国内领先的云技术服务提供商
»  游客             当前位置:  论坛首页 »  自由讨论区 »  MySQL, Oracle及数据库讨论区 »
总帖数
6
每页帖数
101/1页1
返回列表
0
发起投票  发起投票 发新帖子
查看: 2228 | 回复: 5   主题: [求助]SQL内连接与外连接有什么区别呢?求指点        下一篇 
hei_nihao
注册用户
等级:少校
经验:1279
发帖:19
精华:0
注册:2015-4-17
状态:离线
发送短消息息给hei_nihao 加好友    发送短消息息给hei_nihao 发消息
发表于: IP:您无权察看 2015-4-23 14:27:48 | [全部帖] [楼主帖] 楼主

SQL内连接与外连接有什么区别呢?




赞(0)    操作        顶端 
hei_nihao
注册用户
等级:少校
经验:1279
发帖:19
精华:0
注册:2015-4-17
状态:离线
发送短消息息给hei_nihao 加好友    发送短消息息给hei_nihao 发消息
发表于: IP:您无权察看 2015-4-23 14:37:16 | [全部帖] [楼主帖] 2  楼

北京联动北方科技有限公司


赞(0)    操作        顶端 
lei.wang
注册用户
等级:上尉
经验:767
发帖:21
精华:0
注册:1970-1-1
状态:离线
发送短消息息给lei.wang 加好友    发送短消息息给lei.wang 发消息
发表于: IP:您无权察看 2015-4-24 15:51:42 | [全部帖] [楼主帖] 3  楼

内连接  返回连接表中符合连接条件和查询条件的数据行。
连接 不但返回符合连接和查询条件的数据行,还返回不符合条件的一些行。
外联接可以是左向外联接、右向外联接或完整外部联接。    
1)LEFT  JOIN或LEFT OUTER JOIN
左向外联接的结果集包括  LEFT OUTER子句中指定的左表的所有行,而不仅仅是联接列所匹配的行。如果左表的某行在右表中没有匹配行,则在相关联的结果集行中右表的所有选择列表列均为空值。       
2)RIGHT  JOIN 或 RIGHT  OUTER  JOIN
右向外联接是左向外联接的反向联接。将返回右表的所有行。如果右表的某行在左表中没有匹配行,则将为左表返回空值。       
3)FULL  JOIN 或 FULL OUTER JOIN
完整外部联接返回左表和右表中的所有行。当某行在另一个表中没有匹配行时,则另一个表的选择列表列包含空值。如果表之间有匹配行,则整个结果集行包含基表的数据值。   

例子:
-------------------------------------------------
  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)    操作        顶端