oracle (+)
来源:互联网 发布:脸书注册总说网络错误 编辑:程序博客网 时间:2024/05/16 07:49
(+) 只是涉及到两张表关联时
总结: A.X1=B.X1(+) 对表B使用了外连接:
那么where语句后的 不涉及到关联第三张表的- 所有B表的字段 都要加(+)
语句一:
SELECT A.EMP_NAME, A.JOB, B.*
FROM EMPLOYEE A, DEPTMENT B
WHERE A.DEPT_NO = B.DEPT_NO(+)
AND B.DEL_FLG(+) = '0'
该语句利用Oracle的外连接符号,并用条件B.DEL_FLG(+) = '0'限定表B种的有效记录。也有人可能会写成语句二:
语句二:
SELECT A.EMP_NAME, A.JOB, B.*
FROM EMPLOYEE A, DEPTMENT B
WHERE A.DEPT_NO = B.DEPT_NO(+)
AND B.DEL_FLG = '0'
语句二中表B中的字段DEL_FlG没带外连接符号。
粗粗看起来,以上三种SQL语句的写法都有道理,没有问题。那我们再来看下它们的执行结果:
语句一的执行结果
EMP_NAME
JOB
DEPT_NO
DEPT_NAME
LOCATION
DEL_FLG
1
SCOTT
CLERK
1
ACCOUNTING
HANGZHOU
0
2
HXF
PRESIDENT
2
RESEARCH
BEIJING
0
3
JOHN
MANAGER
4
SMITH
SALESMAN
语句二的执行结果
EMP_NAME
JOB
DEPT_NO
DEPT_NAME
LOCATION
DEL_FLG
1
HXF
PRESIDENT
2
RESEARCH
BEIJING
0
2
SCOTT
CLERK
1
ACCOUNTING
HANGZHOU
0
我们发现三条语句的执行结果截然不同。那到底哪一个是对的呢?
其次,我们要求选出表B中的有效记录,出现在结果集中的表B的字段DEL_FLG的值只能是0。由此可见,语句一的执行结果是正确的。
那么语句二是怎么回事呢?在语句二中,虽然对两张表中的相关字段进行了外连接,但是,对附表B中的字段DEL_FLG限定条件的时候,没有使用外连接符号,导致这个连接变成了全连接。这是不符号外连接要求的。
- Oracle???
- oracle
- oracle
- oracle
- oracle
- oracle...
- oracle
- oracle
- ORACLE
- Oracle
- ORACLE
- Oracle
- Oracle
- oracle
- oracle
- oracle
- ORACLE
- oracle
- Java学习笔记之Super关键字学习。
- Java 虚拟机,Reference的认识
- i386和X86各是什么意思
- oracle (+)
- 阿里腾讯的文化产业路线
- oracle (+)
- Java把图片复制到剪切板上
- iReport报表实战-图文详解
- 基于Spring JDBC的轻量级ORM-sborm介绍
- Highcharts 统计报表的使用(曲线图)
- BZOJ 3922:Karin的弹幕 【线段树】+【暴力】
- 包含“?”和“*”的通配符字符串匹配
- hadoop单机存储均衡和坏block处理
- Android:WebView与Javascript交互(相互调用参数、传值)