SQL聯合查詢簡介

2021-05-24 10:06:28 字數 4539 閱讀 9961

資料

庫版本:

oracle9i

連線n個表,至少需要n-1個連線條件。例如:連線三個表,至少需要兩個連線條件。

表testa,testb,testc, 各有

a, b 兩列

a b

001

10a

002

20a

a b

001

10b

003

30b ab

001

10c

004

40c

連線分為兩種:內連線外連線

a

.內連線

內連線,即最常見的等值連線,例:

select

fromtesta,testb

wheretesta.a=testb.a

結果 a

b a

b 001

10a

001

10b

b.

外連線

外連線分為左外連線,右外連線和全外連線。 1.

左外連線

left outer join 

或者left join

外連線就是在等值連線的基礎上加上主表中的未匹配資料,例:

select

*

fromtesta 

leftouterjointestb 

ontesta.a=testb.a

oracle

支援另一種寫法

select

fromtesta,testb

wheretesta.a=testb.a(+)

結果: a

b ab

00110a

00110b

00210b

三個表做左外連線

select

*

fromtesta 

leftouterjointestb 

ontesta.a=testb.a

leftouterjointestc

ontesta.a=testc.a

oracle

支援的另外一種寫法

select

*

fromtesta,testb,testc

wheretesta.a=testb.a(+)

andtesta.a=testc.a(+)

結果: a

b a

b a

b 001

10a

001

10b

001

10c

002

20a

2.右外連線

right outer join 

或者right join

外連線是在等值連線的基礎上加上被連線表的不匹配資料

select

*

fromtesta 

rightouterjointestb 

ontesta.a=testb.a

oracle

支援的另一種寫法

select

*

fromtesta,testb

wheretesta.a(+)=testb.a

結果: a

b a

b 001

10a

001

10b

003

30b

3.

全外連線

full outer join 

或者full join

外連線是在等值連線的基礎上將左表和右表的未匹配資料都加上

select

fromtesta 

fullouterjointestb

ontesta.a=testb.a

外連線的等價寫法,對同一表先做左連線,然後右連線

select

testa.*,testb.*

fromtesta

leftouterjointestb

ontesta.a=testb.a

union

selecttesta.*,testb.*

fromtestb

leftouterjointesta

ontesta.a=testb.a

結果: a

b a b

001

10a

001

10b

002

20a

003

30b

內連線(inner join)就是將根據檢索條件將滿足條件的資料選擇出來,oracle首先用第一張表的第一條資料去掃瞄另一張表的所有資料,如果遇到符合條件的資料就加入到結果集中。直到檢索完第二張表的所有資料。然後用第一張表的第二條資料,重複剛才的動作,直到以第一張的最後一條資料。其關鍵字是

join

,可以使用

using

關鍵字和

on 關鍵字。oracle中預設的連線是內連線

外連線(outer join)是根據需要將表中某些不符合選擇條件的資料也列舉出來,根據選擇標準的不同分為左連線、右連線和滿外連線

自然連線(natural join)是由oracle自行決定哪些列作為連線的條件。oracle是這麼確定的 : 將不同表中的那些具有相同名稱和資料型別的字段用相等的條件連線起來。

自連線(self join)中,oracle將乙個表的乙個映象當作另乙個表,你可以像使用兩個表一樣使用這乙個表。

交叉連線(cross join)是兩個表的笛卡爾積,即不做任何條件限制,他們的結果集的資料的條數是兩個表的資料條數的乘積。

在使用關鍵字join進行不同的表連線時:-》使用using子句指定等值連線中需要用到的列;

-》使用on子句指定額外的連線條件;

-》使用and增加連線條件;

SQL 聯合查詢

use xsgl go select from student select from cause select from exam 聯合查詢 join on 預設為inner,如果有right or left 那麼就指的是外聯,outer 可以不寫 1.最長見為內聯 table1 inner jo...

sql聯合查詢

sql查詢 多表聯合查詢 將具有相同的字段的查詢結果合併為乙個表 關鍵字 union 例項 查詢subs表 select subs id,prefix,acc nbr,cust id,user id,acct id,price plan id,area id,update date from sub...

SQL 聯合查詢

a表 aaa bbb ccc 1a 1b 1c 2a 2b 2c 3a 3b 3c b表 aaa bbb ddd 1a 1b 1d 4a 4b 4d 1 union union all all 表示將查詢的所有結果都合併到結果集中,若不加all會將重複的行只保留一行 sql view plain c...