oracle join關鍵字使用總結

2021-09-02 03:23:55 字數 2004 閱讀 8881

1.內連線:[b][color=red]選出兩個表中所有符合連線條件的row構成的集合。[/color][/b]

2.外連線:分為left、right、full三種:

如有r與s做連線,那麼left是所有滿足條件的row以及所有在r屬性對應值在s中為null的集合。 注意([color=red]left join 是 left outer join 簡寫[/color])

right是所有滿足條件的row以及所有在s屬性對應值在r中為null的集合

[color=red]full是所有滿足條件的row以及任何在r或s中出現null的集合。[/color]

現在可以看到,三種外連線的區別就在於對空值的處理不同(空值真是資料庫的一大困難)。

假設我們有下面兩張表。表a在左邊,表b在右邊。我們給它們各四條記錄。

id name id name

-- ---- -- ----

1 pirate 1 rutabaga

2 monkey 2 pirate

3 ninja 3 darth vader

4 spaghetti 4 ninja

我們用過name欄位用幾種不同方式把這些表聯合起來,看能否得到和那些漂亮的韋恩圖在概念上的匹配。

select * from tablea

inner join tableb

on tablea.name = tableb.name ;

id name id name

-- ---- -- ----

1 pirate 2 pirate

3 ninja 4 ninja

[color=blue][b]內聯合(inner join)只生成同時匹配表a和表b的記錄集。[/b][/color](如下圖)

[img]

select * from tablea

full outer join tableb

on tablea.name = tableb.name ;

id name id name

-- ---- -- ----

1 pirate 2 pirate

2 monkey null null

3 ninja 4 ninja

4 spaghetti null null

null null 1 rutabaga

null null 3 darth vader

[color=red]全外聯合(full outer join)生成表a和表b裡的記錄全集,包括兩邊都匹配的記錄。如果有一邊沒有匹配的,缺失的這一邊為null。[/color](如下圖)

[img]

select * from tablea

left outer join tableb

on tablea.name = tableb.name ;

id name id name

-- ---- -- ----

1 pirate 2 pirate

2 monkey null null

3 ninja 4 ninja

4 spaghetti null null

[color=red]左外聯合(left outer join)生成表a的所有記錄,包括在表b裡匹配的記錄。如果沒有匹配的,右邊將是null。[/color](如下圖)

[img]

總結圖:

[img]

參考:[url]

this關鍵字使用

一,表示類中屬性 1,沒有使用this的情況 class person public string getinfo public class thisdemo01 執行結果 姓名 null,年齡 0 可以得出結論 此時並沒有正確將內容賦給屬性 假設身邊有乙隻筆,遠處也有乙隻筆,肯定會就近拿身邊的筆。...

new關鍵字 this關鍵字 base關鍵字

使用new,所做的三件事 1.類是引用物件,引用物件是在堆中開闢空間 在堆中開闢空間 2.在開闢的堆空間中建立物件 3.呼叫物件的構建函式 4.隱藏父類成員 子類的成員可以與隱藏從父類繼承的成員,類似於重寫。public new void sayhello this關鍵字的使用 1.代表當前類的物件...

this關鍵字 static關鍵字

1.當成員變數和區域性變數重名,可以用關鍵字this來區分 this 代表物件,代表那個物件呢?當前物件 this就是所在函式所屬物件的引用 簡單說 那個物件呼叫了this所在的函式,this就代表哪個物件 this也可以用於在建構函式中呼叫其他建構函式 注意 只能定義在建構函式的第一行,因為初始化...