JOIN 在 SQL 語法中是常用且相當基礎的語法,在系統開發與資料庫維護是必備技能,
但在經歷的過的專案中,也有少數不能隨意使用 JOIN 語法的限制
(因為資料量過於龐大,使用 JOIN 可能會造成資料庫卡住,只能將資料取出後自行組裝)。
這一篇寫 JOIN 熟練一下JOIN語法(如left、right join不常用,每次用都要查一下),
也順便留一些範例,讓自己未來忘記的時候,能回來看一下。
----------------------------------- 我是分隔線 -----------------------------------
在oracle的join使用方法分成下列幾項:
1.cross join
將所有結果全部顯示出來且回傳
(若A table有10個資料項,B table有5個資料欄,則回傳10*5資料結果)
select user_name,department_name
from user
cross join department
2.natural join
可用於資料欄中有相同欄位名稱的兩個資料表進行join,除了兩個欄位內容值必須相同才會select,
其兩個欄位的資料型態要必須相同。
select use_id, user_name, city, location_id
from user
natural join location (可+where 子句 )
3.using clause
若兩個資料表有相同欄位名稱,但沒有相同的資料型態,我們能夠使用using 進行equaljoin。
using 只能用來比對其中一個欄位,且不能與資料表名稱或別名一起使用。
select u.user_name ,l.city
from user u join location l using (location_id)
where location_id = '2300'
4.join on
join可以使用on來指定任意條件或特定欄位進行join,且可以讓sql語法更具可讀性。
select u.user_name ,l.city
from user u join location l
on u.location_id = l.location_id
5.three way join
我們也可以join多個資料表
select u.user_name, l.city, d.department_name
from user u
join location l
on u.department_id= d.department_id
join department d
on d.locaiton_id = l.location_id
6.full(or two-side)join
一般的inner join只會回傳相同數值的資料內容,而不相符的欄位不會回傳回來。
故出現的outer join顯示不符合的欄位,回傳使用者想要的資料內容(right outer join,left outer join)。
若同時顯示right outer join,left outer join的結果,就是full join
select u.user_name, d.department_name
from user u (outer\left\right) outer join department d
on (u.department_id = e.department_id)
常用的SQL語法大致上就介紹這些,多數的語法大致上用上列方式組合而成,
其於個人較熟悉的部分就不詳加介紹
後續會介紹sequence, index, view,synonyms等資料庫相關物件。
--
一連串的出差與教育訓練旅程終於結束了QQ 可以專心寫code !!
耶!! 放假 !!