共计 1587 个字符,预计需要花费 4 分钟才能阅读完成。
演示示例
阐明:以下示例中,表 a 是员工表,有 a,b,c,d 四个员工,性别都是男性 m。表 b 是工资表,有 a,b,d 四个员工,工资对应的是 1000,2000,4000。而后别离演示带 (+) 符号的和不带 (+) 符号的,后果如下。
SQL> select * from a;
NAME SEX
-------------------- -----
a m
b m
c m
d m
SQL> select * from b;
NAME MONEY
-------------------- ----------
a 1000
b 2000
d 4000
SQL> select a.name,b.money from a,b where a.name=b.name(+);
NAME MONEY
-------------------- ----------
a 1000
b 2000
d 4000
c
SQL> select a.name,b.money from a,b where a.name=b.name;
NAME MONEY
-------------------- ----------
a 1000
b 2000
d 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 1000
b 2000
c
d 4000
SQL> 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 高级软件工程师、四年工作教训,回绝咸鱼争当龙头的斜杠程序员。
听我说,提高多,程序人生一把梭
如果有幸能帮到你,请帮我点个【赞】,给个关注,如果能顺带评论给个激励,将不胜感激。
职场亮哥文章列表:更多文章
自己所有文章、答复都与版权保护平台有单干,著作权归职场亮哥所有,未经受权,转载必究!
正文完