WEB开发网
开发学院数据库Oracle Oracle命令 外部结合 阅读

Oracle命令 外部结合

 2012-06-01 19:33:37 来源:WEB开发网   
核心提示:现在观察两个结合查询的表,红色标注主表(P),Oracle命令 外部结合(2),查询字段为:<span style="color: rgb(255, 102, 102); "> P.EMP_NAME, P.EMP_ADDR, P.EMP_CITY, P.EMP_PHONE</spa

现在观察两个结合查询的表,红色标注主表(P),查询字段为:

<span style="color: rgb(255, 102, 102); "> P.EMP_NAME, P.EMP_ADDR, P.EMP_CITY, P.EMP_PHONE</span>

蓝色标注临时表(T),查询字段为:
T.EMP_ZIP

当 '+'(结合标志) 附属在T表上时,除了返回满足查询条件WHERE P.EMP_ID=T.EMP_ID的信息外,同时还会返回P对应的查询字段: row_1, row_3, row_5。 

反过来查询,让‘+’标志和主表P结合:

<span style="font-family:verdana, arial, helvetica;">SQL> SELECT P.EMP_NAME, P.EMP_ADDR, P.EMP_CITY, P.EMP_PHONE, T.EMP_ZIP FROM EMPLOYEE_CHECK P, EMPLOYEE_CHECK_TMP T WHERE P.EMP_ID(+) = T.EMP_ID;
 
EMP_NAME             EMP_ADDR             EMP_CITY             EMP_PHONE   EMP_ZIP
-------------------- -------------------- -------------------- ----------- -------
CAI FANG JIE         YANG MEI VILLAGE     SHEN ZHEN            18218429577 518000
WU JING XIN          MING ZHU YUAN        WU HAN               187****235  430060
                                                                           430060</span>

--可以看到除了返回满足条件的查询信息外,还返回了T表的其他字段,当然由于T表的查询字段只有EMP_ZIP字段,所以其他字段都为NULL。


更为形象的查询结构如: FROM T RIGHT OUTER JOIN P ON T.EMP_ID=P.EMP_ID ;---@_1

<span style="font-family:verdana, arial, helvetica;">SQL> SELECT P.EMP_NAME, P.EMP_ADDR, P.EMP_CITY, P.EMP_PHONE, T.EMP_ZIP FROM EMPLOYEE_CHECK P RIGHT OUTER JOIN EMPLOYEE_CHECK_TMP T ON P.EMP_ID = T.EMP_ID;
 
EMP_NAME             EMP_ADDR             EMP_CITY             EMP_PHONE   EMP_ZIP
-------------------- -------------------- -------------------- ----------- -------
CAI FANG JIE         YANG MEI VILLAGE     SHEN ZHEN            18218429577 518000
WU JING XIN          MING ZHU YUAN        WU HAN               187****235  430060
                                                                           430060</span>

当使用RIGHT OUTER JOIN 时,返回右边的表即:T 表,除返回满足查询条件之外的,还包括T表其他的所有字段。

更为形象的查询结构如: FROM T LEFT OUTER JOIN P ON T.EMP_ID=P.EMP_ID ;---@_2

<span style="font-family:verdana, arial, helvetica;">SQL> SELECT P.EMP_NAME, P.EMP_ADDR, P.EMP_CITY, P.EMP_PHONE, T.EMP_ZIP FROM EMPLOYEE_CHECK P LEFT OUTER JOIN EMPLOYEE_CHECK_TMP T ON P.EMP_ID = T.EMP_ID;
 
EMP_NAME             EMP_ADDR             EMP_CITY             EMP_PHONE   EMP_ZIP
-------------------- -------------------- -------------------- ----------- -------
ZOU QI LEI           YANG MEI VILLAGE     SHEN ZHEN            123456789   
CAI FANG JIE         YANG MEI VILLAGE     SHEN ZHEN            18218429577 518000
LU JING HUAN         YANG MEI VILLAGE     GUANG ZHOU           1397165903  
WU JING XIN          MING ZHU YUAN        WU HAN               187****235  430060
LI WEI               XIAO QU              WU HAN               197****436  </span>

Tags:Oracle 命令 外部

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接