微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

sqlserver技术内幕<二> 表运算符之join

left join,inner join,right join,cross join,full join的区别


inner join  只返回两张表连接列的匹配项
left join  第一张表的连接列在第二张表中没有匹配是 , 第二张表中的值返回 null
right join 
第二张表的连接列在第一张表中没有匹配是 第一张表中的值返回 null 
full join 表示把A表和B表的记录都显示出来,不符合条件的用NULL表示。
以上几种必须设置关联条件,sqlserver中可在on,where中设定,oracle必须在on中设定

cross join 是笛卡儿乘积就是一张表的行数乘以另一张表的行数,返回结果的行数为2个表行数乘




例:
[TEST@ORA1] sql>select * from a;

编号 姓名
---- ----------
1000 张三
2000 李四
3000 王五

[TEST@ORA1] sql>select * from b;

编号 商品
---- ----------
1000 电视机
2000 录像机
4000 自行车

[TEST@ORA1] sql>set null 空值--这里为了显示方面我把NULL定义成了[空值]

[TEST@ORA1] sql>select a.*,b.* from a inner join b on a.编号=b.编号;

编号 姓名       编号 商品
---- ---------- ---- ----------
1000 张三       1000 电视机
2000 李四       2000 录像机

[TEST@ORA1] sql>select a.*,b.* from a left join b on a.编号=b.编号;

编号 姓名       编号 商品
---- ---------- ---- ----------
1000 张三       1000 电视机
2000 李四       2000 录像机
3000 王五       空值 空值

[TEST@ORA1] sql>select a.*,b.* from a right join b on a.编号=b.编号;

编号 姓名       编号 商品
---- ---------- ---- ----------
1000 张三       1000 电视机
2000 李四       2000 录像机
空值 空值       4000 自行车

[TEST@ORA1] sql>select a.*,b.* from a full join b on a.编号=b.编号;

编号 姓名       编号 商品
---- ---------- ---- ----------
1000 张三       1000 电视机
2000 李四       2000 录像机
3000 王五       空值 空值
空值 空值       4000 自行车

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐