博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Oracle中连接与加号(+)的使用
阅读量:4988 次
发布时间:2019-06-12

本文共 1048 字,大约阅读时间需要 3 分钟。

1、左外连接(Left outer join/ left join)

      left join是以左表的记录为基础的,左表的记录将会全部表示出来,而右表只会显示符合搜索条件的记录。右表记录不足的地方均为NULL.

用(+)来实现, 这个+号可以这样来理解: + 表示补充,即哪个表有加号,这个表就是匹配表。所以加号写在右表,左表就是全部显示,故是左连接。

例子:select a.*,b.bname from student_drb a, class_drb b where a.bno=b.bno(+)  -------------- 左连接,注意: 用(+) 就要用关键字where

2、右外连接(right outer join/ right join)

和left join的结果刚好相反,是以右表为基础的, 显示右表的所有记录,在加上左表和右表匹配的结果。 左表不足的地方用NULL填充.

用(+)来实现, 这个+号可以这样来理解: + 表示补充,即哪个表有加号,这个表就是匹配表。所以加号写在左表,右表就是全部显示,故是右连接。

例子:select a.*,b.bname from student_drb a, class_drb b where a.bno(+)=b.bno ---------------- 右连接,注意: 用(+) 就要用关键字where

3、全连接(full join)

        左表和右表都不做限制,所有的记录都显示,两表不足的地方用null 填充。 全外连接不支持(+)这种写法。

4、等值查询

例子:select a.*,b.bname from student_drb a, class_drb b where a.bno=b.bno

查询出的结果是左表和右表中bno字段相等的显示出来。也即出来的结果肯定比左、右、全连接的结果要少或相等。

5、内联接查询   inner join  on (与等值查询结果是一样的),但效率要比等值查询高,因为等值查询是先笛卡尔积,再根据条件查找。

6、交叉查询cross join (如果需要条件则用where而不用on)

交叉查询是用的笛卡尔积,效率较慢select * from student_drb cross join class_drb

等价于select * from student_drb,class_drb

转载于:https://www.cnblogs.com/langtianya/p/7516045.html

你可能感兴趣的文章
Linux虚拟地址空间布局以及进程栈和线程栈总结(转)
查看>>
批量部署ssh信任关系
查看>>
Asp.Net 高性能ORM框架——SqlSugar
查看>>
合并两个 Lambda 表达式
查看>>
dateDiff 用法
查看>>
2991:2011 (数学)
查看>>
1370:最小函数值
查看>>
windows服务和一般win程序打包安装
查看>>
Sublime Text web开发神器
查看>>
linux sudo 系统环境变量 用户环境变量
查看>>
Java语法基础(1)
查看>>
;(function(){ //代码})(); 自执行函数开头为什么要加;或者!
查看>>
201521123096《Java程序设计》第十三周学习总结
查看>>
【luogu P1082 同余方程】 题解
查看>>
数据结构 | 哈希表二次探查法 : 1078
查看>>
纯css实现DIV以及图片水平垂直居中兼容多种浏览器(实现过程)
查看>>
[转载]记不住ASP.NET页面生命周期的苦恼
查看>>
Oracle GoldenGate 二、配置和使用
查看>>
第六次作业
查看>>
Primes on Interval(二分 + 素数打表)
查看>>