sql left outer join 和 right outer join 和 full outer join 的区别

今天突然想到了以前去面试的时候一个考官的问题:
请你讲一讲left outer join 和 right outer join 和 full outer join 的区别?
先说重要的
CROSS JOIN 笛卡尔乘积(所有可能的行对)
INNER JOIN 仅对满足连接条件的CROSS中的列
LEFT OUTER JOIN 一个表满足条件的行,和另一个表的所有行
RIGHT OUTER JOIN 与LEFT相同,但两个表的角色互换
FULL OUTER JOIN LEFT OUTER 和 RIGHT OUTER中所有行的超集

下面看个例子:用sql 2005 来做例子
第一准备两张表 ta tb 表
ta表:
[img]http://dl.iteye.com/upload/attachment/414841/5ac22cb8-c481-364a-8cf8-c6fc0b383e25.jpg[/img]
tb表:
[img]http://dl.iteye.com/upload/attachment/414843/005efd1c-6cfa-3657-a1e2-a3a76d662520.jpg[/img]

ta表和tb表通过ta表中的fid和tb表中id关联
第二添加数据
ta表数据如下:
[img]http://dl.iteye.com/upload/attachment/414847/6c981542-bf71-3ec6-8583-0069597723d0.jpg[/img]
tb表数据如下:
[img]http://dl.iteye.com/upload/attachment/414849/ab69ac97-abea-30e8-a6db-2e6092176a2e.jpg[/img]

第三我们使用left join 和 left outer join
select * from ta a left outer join tb b on a.fid = b.id
[img]http://dl.iteye.com/upload/attachment/414857/f1d88e4d-6ed7-3650-9517-c19f0b1800c6.jpg[/img]
left join 和left outer join 我们看到的结果一样

第四我们使用right join 和 right outer join
select * from ta a right join tb b on a.fid = b.id
[img]http://dl.iteye.com/upload/attachment/414862/b33cf01f-c56c-30c8-9316-6352a3705e85.jpg[/img]

right join 和right outer join 我们看到的结果一样
第五我们看看full outer join 的结果
select * from ta a full outer join tb b on a.fid = b.id
[img]http://dl.iteye.com/upload/attachment/414869/19db6d9f-890a-3c80-9729-c5460f88891a.jpg[/img]
如有什么错误请大家指出!
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值