说明:如下示例中,表a是员工表,有a,b,c,d四个员工,性别都是男性m。表b是工资表,有a,b,d四个员工,工资对应的是1000,2000,4000。而后分别演示带(+)符号的和不带(+)符号的,结果以下。html
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。程序员
(+) 表示外链接。条件关联时,通常只列出表中知足链接条件的数据。若是条件的一边出现(+),则另外一边的表就是主表,主表中的全部记录都会出现,即便附表中有的记录为空sql
内链接,外链接,交叉链接,其中外链接包括左链接和右链接。数据库
内链接windows
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;
左链接ide
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;
交叉链接ui
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: 一个谓词只能引用一个外部联接的表
因此(+)只是表示外链接,并不表示交叉链接。url
参考:code
SQL表链接查询(inner join、full join、left join、right join)
记得帮我点赞哦!
精心整理了计算机各个方向的从入门、进阶、实战的视频课程和电子书,按照目录合理分类,总能找到你须要的学习资料,还在等什么?快去关注下载吧!!!
念念不忘,必有回响,小伙伴们帮我点个赞吧,很是感谢。
我是职场亮哥,YY高级软件工程师、四年工做经验,拒绝咸鱼争当龙头的斜杠程序员。
听我说,进步多,程序人生一把梭
若是有幸能帮到你,请帮我点个【赞】,给个关注,若是能顺带评论给个鼓励,将不胜感激。
职场亮哥文章列表:更多文章
本人全部文章、回答都与版权保护平台有合做,著做权归职场亮哥全部,未经受权,转载必究!