總讓人記不住的外連線
總是記不住外連線,每次遇到都要先翻書,做個試驗記錄一下。
C:\Users\lenovo>sqlplus scott/tiger@abc
SQL*Plus: Release 11.2.0.1.0 Production on 星期四 2月 13 10:56:17 2014
Copyright (c) 1982, 2010, Oracle. All rights reserved.
連線到:
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
SQL> create table t1(col1 number,col2 varchar2(1));
表已建立。
SQL> create table t2(col2 varchar2(1),col3 varchar2(2));
表已建立。
SQL> insert into t1 values(1,'A');
已建立 1 行。
SQL> insert into t1 values(2,'B');
已建立 1 行。
SQL> insert into t1 values(3,'C');
已建立 1 行。
SQL> insert into t2 values('A','A2');
已建立 1 行。
SQL> insert into t2 values('B','B2');
已建立 1 行。
SQL> insert into t2 values('D','D2');
已建立 1 行。
SQL> commit;
提交完成。
SQL> select * from t1;
COL1 C
---------- -
1 A
2 B
3 C
SQL> select * from t2;
C CO
- --
A A2
B B2
D D2
SQL> select t1.col1,t1.col2,t2.col3 from t1,t2 where t1.col2=t2.col2;
COL1 C CO
---------- - --
1 A A2
2 B B2
--以T1表做為連線的驅動表,此時的連線結果除了包含T1表和T2表所有滿足該連線條件的記錄外,還會包含T1表所有不滿足該連線條件的記錄,同時,驅動表
中所有不滿足該連線條件的記錄所對應的被驅動表T2中查詢列均會以NULL值來填充。
SQL> select t1.col1,t1.col2,t2.col3 from t1 left outer join t2 on (t1.col2=t2.col2);
COL1 C CO
---------- - --
1 A A2
2 B B2
3 C
--等同於下面的SQL
SQL> select t1.col1,t1.col2,t2.col3 from t1,t2
2 where t1.col2=t2.col2(+);
COL1 C CO
---------- - --
1 A A2
2 B B2
3 C
--以T2表做為連線的驅動表,此時的連線結果除了包含T1表和T2表所有滿足該連線條件的記錄外,還會包含T2表所有不滿足該連線條件的記錄,同時,驅動表
中所有不滿足該連線條件的記錄所對應的被驅動表T1中查詢列均會以NULL值來填充。
SQL> select t1.col1,t1.col2,t2.col3 from t1 right outer join t2 on (t1.col2=t2.col2);
COL1 C CO
---------- - --
1 A A2
2 B B2
D2
--等同於下面的SQL
SQL> select t1.col1,t1.col2,t2.col3 from t1,t2
2 where t1.col2(+)=t2.col2;
COL1 C CO
---------- - --
1 A A2
2 B B2
D2
C:\Users\lenovo>sqlplus scott/tiger@abc
SQL*Plus: Release 11.2.0.1.0 Production on 星期四 2月 13 10:56:17 2014
Copyright (c) 1982, 2010, Oracle. All rights reserved.
連線到:
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
SQL> create table t1(col1 number,col2 varchar2(1));
表已建立。
SQL> create table t2(col2 varchar2(1),col3 varchar2(2));
表已建立。
SQL> insert into t1 values(1,'A');
已建立 1 行。
SQL> insert into t1 values(2,'B');
已建立 1 行。
SQL> insert into t1 values(3,'C');
已建立 1 行。
SQL> insert into t2 values('A','A2');
已建立 1 行。
SQL> insert into t2 values('B','B2');
已建立 1 行。
SQL> insert into t2 values('D','D2');
已建立 1 行。
SQL> commit;
提交完成。
SQL> select * from t1;
COL1 C
---------- -
1 A
2 B
3 C
SQL> select * from t2;
C CO
- --
A A2
B B2
D D2
SQL> select t1.col1,t1.col2,t2.col3 from t1,t2 where t1.col2=t2.col2;
COL1 C CO
---------- - --
1 A A2
2 B B2
--以T1表做為連線的驅動表,此時的連線結果除了包含T1表和T2表所有滿足該連線條件的記錄外,還會包含T1表所有不滿足該連線條件的記錄,同時,驅動表
中所有不滿足該連線條件的記錄所對應的被驅動表T2中查詢列均會以NULL值來填充。
SQL> select t1.col1,t1.col2,t2.col3 from t1 left outer join t2 on (t1.col2=t2.col2);
COL1 C CO
---------- - --
1 A A2
2 B B2
3 C
--等同於下面的SQL
SQL> select t1.col1,t1.col2,t2.col3 from t1,t2
2 where t1.col2=t2.col2(+);
COL1 C CO
---------- - --
1 A A2
2 B B2
3 C
--以T2表做為連線的驅動表,此時的連線結果除了包含T1表和T2表所有滿足該連線條件的記錄外,還會包含T2表所有不滿足該連線條件的記錄,同時,驅動表
中所有不滿足該連線條件的記錄所對應的被驅動表T1中查詢列均會以NULL值來填充。
SQL> select t1.col1,t1.col2,t2.col3 from t1 right outer join t2 on (t1.col2=t2.col2);
COL1 C CO
---------- - --
1 A A2
2 B B2
D2
--等同於下面的SQL
SQL> select t1.col1,t1.col2,t2.col3 from t1,t2
2 where t1.col2(+)=t2.col2;
COL1 C CO
---------- - --
1 A A2
2 B B2
D2
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/26084062/viewspace-1081255/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- MySQL筆記3——內連線/外連線、多表連線MySql筆記
- 總是記不住的css盒子模型CSS模型
- 那些你總是記不住但又總是要用的cssCSS
- Oracle左外連線、右外連線、完全外連線以及(+)號用法Oracle
- MYSQL學習筆記23: 多表查詢(自連線內連線+左右外連線)MySql筆記
- sql 內連線和外連線SQL
- Linux指令記不住的筆記Linux筆記
- MYSQL語法:左連線、右連線、內連線、全外連線MySql
- 內聯,左外聯,右外聯,全連線,交叉連線 的區別
- 記不住的繼承方式繼承
- Redis 可以讓工具連線Redis
- 3.DQL資料查詢語言(內連線,外連線,自連線)
- 解決Windows遠端桌面連線每次都提示輸入密碼的問題,遠端桌面記不住密碼Windows密碼
- Mysql——內外連線,事物,索引MySql索引
- Python連線es筆記二之查詢方式彙總Python筆記
- 資源連線彙總
- 連線別人的MySql資料庫MySql資料庫
- Redis 可以讓工具連線 小技巧Redis
- MySQL連線控制外掛介紹MySql
- mysql外連線有哪些型別MySql型別
- 【問題記錄】—SignalR連線斷線重連SignalR
- 連線位置國外的遠端桌面,使用anydesk
- WiFi連線風險造成個人資訊外洩網路安全需加強WiFi
- 防護ddos總抓不住“命脈”?如何能比別人棋高一著
- 10斤重的耳機還有人戴?140歲的時尚讓人有點招架不住啊
- Git 記不住的偶爾用的命令(日常更新)Git
- PostgreSQL優化案例之 反連線與外連線等價改寫SQL優化
- Vmware虛擬機器連線外網虛擬機
- 內外網同時連線解決
- 關於外連線和where條件
- 無法連線java visualvm外掛中心JavaLVM
- SQL改寫系列九:外連線轉內連線的常見場景與錯誤SQL
- 藍芽怎麼設定密碼不讓人連線 藍芽設定密碼的方法藍芽密碼
- python連線Oracle的外掛cx_Oracle安裝PythonOracle
- Nginx 面試 40 連問,快頂不住了~~Nginx面試
- 記錄一下MySQL的連線MySql
- JDBC連線MySQL8.0.13的記錄JDBCMySql
- SQL改寫系列九:外連線轉內連線的常見場景與錯誤-2SQL
- 5.12 | 一個註定讓人銘記的日子