加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

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

发布时间:2020-12-12 12:54:21 所属栏目:MsSql教程 来源:网络整理
导读:left join,inner join,right join,cross join,full join的区别 inner join ? 只返回两张表连接列的匹配项 left join ? 第一张表的连接列在第二张表中没有匹配是 , 第二张表中的值返回 null right 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 自行车

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读