乐趣区

关于oracle:sql语句中的作用

演示示例

阐明:以下示例中,表 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 高级软件工程师、四年工作教训,回绝咸鱼争当龙头的斜杠程序员。

听我说,提高多,程序人生一把梭

如果有幸能帮到你,请帮我点个【赞】,给个关注,如果能顺带评论给个激励,将不胜感激。

职场亮哥文章列表:更多文章

自己所有文章、答复都与版权保护平台有单干,著作权归职场亮哥所有,未经受权,转载必究!

退出移动版