oracle join 使用詳解

2021-06-19 06:27:26 字數 2591 閱讀 9915

在使用sql 會經常使用join 

1、概述

1.1、所有的join連線,都可以加上類似where a.id='1000'的條件,達到同樣的效果。

1.2、除了cross join不可以加on外,其它join連線都必須加上on關鍵字,後都可加where條件。

1.3、雖然都可以加where條件,但是他們只在標準連線的結果集上查詢where條件。比如左外連線的結果沒有class的三班,所以如果加 where class.id='c003'雖然在表中有,但在左連線結果集中沒有,所以查詢後,是沒有記錄的。

2、例項,標準的join連線,(不加where條件的)

2.1、設有表如下:

學生表

班級表,對應學生表中的classid

2.2、自連線:join ,inner join

1

--自連線 :只返回兩張表連線列的匹配項。2--

以下三種查詢結果一樣。

3select

*from student s inner

join class c on s.classid=c.id; 4

select

*from student s join class c on s.classid=c.id; 5

select

*from student s,class c where s.classid=c.id;

自連線結果:

2.3、笛卡兒乘積:cross join

1

--笛卡兒乘積連線 :即不加任何條件,達到 m*n 的結果集。2--

以下兩種查詢結果一樣。

3select

*from student s cross

join class c; 4

select

*from student,class;

笛卡爾結果:

注意:如果cross join加上where s.classid=c.id條件,會產生跟自連線一樣的結果:

1

--加上條件,產生跟自連線一樣的結果。

2select

*from student s cross

join class c where s.classid=c.id;

自連線結果集的cross join連線結果

2.3、左外連線:left join

1

--左連線 :列出左邊表全部的,及右邊表符合條件的,不符合條件的以空值代替。2--

在(+)計算時,哪個帶(+)哪個需要條件符合的,另乙個全部的。即放左即右連線,放右即左連線。3--

以下結果集相同。

4select

*from student s left

join class c on s.classid=c.id; 5

select

*from student s,class c where s.classid=c.id(+);

左連線結果:

2.4、右外連線:right join

1

--右外連線 :與左連線一樣,列出右邊表全部的,及左邊表符合條件的,不符合條件2--

的用 空值 替代。3--

(+)一樣,它的位置與連線相反。

4select

*from student s right

join class c on s.classid=c.id; 5

select

*from student s,class c where s.classid(+)=c.id;

右連線結果

2.5、全連線:full join

1

--全連線 :產生m+n的結果集,列出兩表全部的,不符合條件的,以空值代替。

2select

*from student s full

join class c on s.classid=c.id;

全連線結果集

oracle join關鍵字使用總結

1.內連線 b color red 選出兩個表中所有符合連線條件的row構成的集合。color b 2.外連線 分為left right full三種 如有r與s做連線,那麼left是所有滿足條件的row以及所有在r屬性對應值在s中為null的集合。注意 color red left join 是 ...

Regmon使用詳解

新近安裝foxmail 5.0正式版,卻發現只能收取而不能傳送郵件。經過一番檢查確定,網路正常,foxmail設定也正確。那麼究竟是 何方神聖 在暗中搗鬼呢?甭急,咱先請來個 福爾摩斯 regmon幫忙查出 真兇 regmon v6.12小檔案 軟體版本 6.12 軟體大小 82 kb 軟體性質 免...

FCKeditor使用詳解

fckeditor 的.net 2.0核心庫 說明 fckeditor2.6.3.zip是其最新的檔案和什麼的 fckeditor.net.zip是asp.net呼叫的dll在裡面。2.分別解壓後把fckeditor2.6.3.zip裡的fckeditor目錄整個複製到 中。3.解壓fckedito...