演示示例
阐明:以下示例中,表a是员工表,有a,b,c,d四个员工,性别都是男性m。表b是工资表,有a,b,d四个员工,工资对应的是1000,2000,4000。而后别离演示带(+)符号的和不带(+)符号的,后果如下。
SQL> select * from a;NAME SEX-------------------- -----a mb mc md mSQL> select * from b;NAME MONEY-------------------- ----------a 1000b 2000d 4000SQL> select a.name,b.money from a,b where a.name=b.name(+);NAME MONEY-------------------- ----------a 1000b 2000d 4000cSQL> select a.name,b.money from a,b where a.name=b.name;NAME MONEY-------------------- ----------a 1000b 2000d 4000
可见,带(+)号时,a表中的所有人都在,即便工资为空。不带(+)时,a表中的没有呈现工资为空的员工c。
<!--more-->
对(+)号的解释
(+) 示意外连贯。条件关联时,个别只列出表中满足连贯条件的数据。如果条件的一边呈现(+),则另一边的表就是主表,主表中的所有记录都会呈现,即便附表中有的记录为空
(+)的扩大:SQL表连贯
SQL表连贯分类
内连贯,外连贯,穿插连贯,其中外连贯包含左连贯和右连贯。
SQL表连贯示例
内连贯
SQL> select a.name,b.money from a,b where a.name=b.name;SQL> select a.name,b.money from a inner join b on a.name=b.name;
左连贯
SQL> select a.name,b.money from a,b where a.name=b.name(+);SQL> select a.name,b.money from a left join b on a.name=b.name;
右连贯
SQL> select a.name,b.money from a right join b on a.name=b.name;SQL> select a.name,b.money from a,b where a.name(+)=b.name;
穿插连贯
SQL> select a.name,b.money from a full join b on a.name=b.name;NAME MONEY-------------------- ----------a 1000b 2000cd 4000SQL> select a.name,b.money from a,b where a.name(+)=b.name(+);select a.name,b.money from a,b where a.name(+)=b.name(+) *第 1 行呈现谬误:ORA-01468: 一个谓词只能援用一个内部联接的表
所以(+)只是示意外连贯,并不示意穿插连贯。
参考:
SQL Server 数据库 (+) 这个是什么意思
SQL表连贯查问(inner join、full join、left join、right join)
记得帮我点赞哦!
精心整顿了计算机各个方向的从入门、进阶、实战的视频课程和电子书,依照目录正当分类,总能找到你须要的学习材料,还在等什么?快去关注下载吧!!!
朝思暮想,必有回响,小伙伴们帮我点个赞吧,非常感谢。
我是职场亮哥,YY高级软件工程师、四年工作教训,回绝咸鱼争当龙头的斜杠程序员。听我说,提高多,程序人生一把梭
如果有幸能帮到你,请帮我点个【赞】,给个关注,如果能顺带评论给个激励,将不胜感激。
职场亮哥文章列表:更多文章
自己所有文章、答复都与版权保护平台有单干,著作权归职场亮哥所有,未经受权,转载必究!