總讓人記不住的外連線
總是記不住外連線,每次遇到都要先翻書,做個試驗記錄一下。
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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Oracle內連線、外連線、右外連線、全外連線小總結Oracle
- Oracle 左外連線、右外連線、全外連線小總結Oracle
- 內連線、外連線總結
- mysql 外連線總結MySql
- MySQL筆記3——內連線/外連線、多表連線MySql筆記
- 外連線的一些總結
- 【SQL】Oracle的內連線、左外連線、右外連線及全外連線SQLOracle
- SQL的四種連線:內連線 左外連線 右外連線 全連線SQL
- Oracle 內外連線 join 總結Oracle
- 總是記不住的css盒子模型CSS模型
- 那些你總是記不住但又總是要用的cssCSS
- 深入理解SQL的四種連線-左外連線、右外連線、內連線、全連線SQL
- Oracle左外連線、右外連線、完全外連線以及(+)號用法Oracle
- 內連線、外連線
- sybase的外連線
- MYSQL學習筆記23: 多表查詢(自連線內連線+左右外連線)MySql筆記
- sql 內連線和外連線SQL
- 外連線與連線順序
- SQL SERVER 自連線、外連線SQLServer
- 多表外連線的使用
- oracle 外連線的使用Oracle
- oracle外連線Oracle
- 例項解析外連線 內連線 自連線 全連線
- MYSQL語法:左連線、右連線、內連線、全外連線MySql
- 外連線轉換為內連線的情況
- 轉載:內連線與外連線的區別
- sql和hql中join語句區別,以及hibernate中內連線,迫切內連線,左外連線,迫切左外連線,右外連線的區別(合集)...SQL
- 內聯,左外聯,右外聯,全連線,交叉連線 的區別
- sql內連結,外連線SQL
- 記不住的繼承方式繼承
- mysql左外連線MySql
- 行的儲存(塊內連線與塊外連線)
- SQL Server中內連線和外連線的區別SQLServer
- Oracle 表連線方式詳解(外連結、內連線、自連線)Oracle
- Redis 可以讓工具連線Redis
- iOS wifi連線外設iOSWiFi
- InfoSet中左外連線
- not in 用外連線實現