四、sql基礎:多表關聯查詢--【Oracle資料庫】
阿新 • • 發佈:2019-02-01
####四、多表關聯查詢
#####4.1聯合查詢–等於連結–示例
員工表(員工id, 員工姓名,部門id)
部門表(部門id, 部門名稱)
要查詢員工id、姓名、部門名稱:
select 員工表.員工id, 員工表.員工姓名, 部門表.部門姓名
from 員工表,部門表
where 員工表.部門id = 部門表.部門id;
#####4.2 聯合查詢–不等連結–示例
員工表(員工id, 員工姓名, 員工薪水)
薪水錶(薪水等級,最低薪水,最高薪水)
要查詢員工姓名、員工薪水、薪水等級:
select 員工表.員工姓名,員工表.員工薪水, 薪水錶.薪水等級 from 員工表,薪水錶 whree 員工表.員工薪水 between 薪水錶.最低薪水 and 薪水錶.最高薪水;
#####4.3 聯合查詢–外連結(左、右連線)–示例
看4.1,當員工表中有一個員工的部門id是空,那麼4.1查詢出來的結果就沒有該員工的資訊,因為部門id(null)在部門表中找不到相對應的部門資訊,所以他就不顯示。
外連線解決了這一問題,使用外連線之後,可以顯示所有員工的資訊:–右連結
select 員工表.員工id, 員工表.員工姓名, 部門表.部門姓名
from 員工表,部門表
where 員工表.部門id = 部門表.部門id(+);
我們要顯示所有的員工資訊,那麼就在另一張表後加(+)
這樣一旦某個員工沒有部門,就會顯示: ------------------------------- | 員工姓名 | 部門id | 部門名稱 | ------------------------------- | zhao | 10 | IT | ------------------------------- | tai | | | -------------------------------
那我們要顯示所有的部門資訊呢?萬一這個部門下沒有員工呢?–左連線
select 員工表.員工id, 員工表.員工姓名, 部門表.部門姓名 from 員工表,部門表 where 員工表.部門id(+) = 部門表.部門id; ------------------------------- | 員工姓名 | 部門id | 部門名稱 | ------------------------------- | zhao | 10 | IT | ------------------------------- | | 11 | HR | -------------------------------
#####4.4 聯合查詢–自連結–示例
員工表(員工id, 員工姓名,員工上級id)
這裡需要注意,員工上級也在員工表中!
要查詢員工id, 員工姓名,員工上級姓名:
select 員工表.員工id,員工表.員工姓名,上級.員工姓名
from 員工表,員工表 上級
where 員工表.員工上級id = 上級.員工id;