商務英語計算機英語

資料庫中join的用法

本文已影響 3.01W人 

資料庫中join的用法的用法你知道嗎?下面小編就跟你們詳細介紹下資料庫中join的用法的用法,希望對你們有用。

padding-bottom: 75%;">資料庫中join的用法

  資料庫中join的用法的用法如下:

一、join的用法

內連線、外連線

示例用表:

僱員表(Employee)

LastNameDepartmentID

Rafferty31

Jones33

Steinberg33

Robinson34

Smith34

JasperNULL

部門表(Department)

DepartmentID部門

31銷售部

33工程部

34書記

35市場部

1、內連線:相等連線、自然連線、交叉連線

1)、顯式的內連線與隱式連線(inner join == join )

顯示連線:SELECT * from employee join department on rtmentID = rtmentID

等價於:

隱式連線:SELECT * from employee,department WHERE rtmentID = rtmentID

注:當DepartmentID不匹配,就不會往結果表中生成任何資料。

2)、相等連線

提供了一種可選的簡短符號去表達相等連線,它使用 USING 關鍵字。

SELECT * from employee join department using (DepartmentID)

注:與顯式連線不同在於:DepartmentID只顯示一列

3)、自然連線

比相等連線的進一步特例化。兩表做自然連線時,兩表中的所有名稱相同的列都將被比較,這是隱式的。

自然連線得到的結果表中,兩表中名稱相同的列只出現一次.

select * from employee natural join department

注:在 Oracle 裡用 JOIN USING 或 NATURAL JOIN 時,如果兩表共有的列的名稱前加上某表名作為字首,

則會報編譯錯誤: "ORA-25154: column part of USING clause cannot have qualifier"

或 "ORA-25155: column used in NATURAL join cannot have qualifier".

4)交叉連線(又稱笛卡爾連線)

如果 A 和 B 是兩個集合,它們的交叉連線就記為: A × B.

顯示連線:

select * from employee cross join department

等價於

隱式連線:

select * from employee,department

2、外連線

並不要求連線的兩表的每一條記錄在對方表中都一條匹配的記錄。

1)左連線(left outer join == left join)

若A表與B表左連線,A表對就的B表沒有匹配,連線操作也會返回一條記錄,對應值為NULL。

如:

Jaspernull null null

Jones3333工程部

Rafferty3131銷售部

Robinson3434書記

Smith3434書記

Steinberg3333工程部

若A表對應B表中有多行,則左表會複製和右表匹配行一樣的數量,並組合生成連線結果。

如:select * from department left join employee on rtmentId = rtmentId

31銷售部Rafferty31

33工程部Jones33

33工程部Steinberg33

34書記Robinson34

34書記Smith34

35市場部nullnull

2)、右連線(right outer join == right join)

與左連線同(略)

3)、全連線(full outer join ==full join)

是左右外連線的並集. 連線表包含被連線的表的所有記錄, 如果缺少匹配的記錄, 即以 NULL 填充。

select * from employee full outer join department on rtmentId = rtmentId

注:一些資料庫系統(如 MySQL)並不直接支援全連線, 但它們可以通過左右外連線的並集(參: union)來模擬實現.

和上面等價的例項:

select * from employee left join department on rtmentId = rtmentId

union all

select * from employee right join department on rtmentId = rtmentId

注:SQLite 不支援右連線。

猜你喜歡

熱點閱讀

最新文章

推薦閱讀