第5章 多表查詢

2021-06-04 11:15:58 字數 3786 閱讀 2527

等值連線

select employees.employee_id, employees.last_name,

employees.department_id, departments.department_id,

departments.location_id

from   employees, departments

where  employees.department_id = departments.department_id;

注意:

•使用表名字首在多個表中區分相同的列。

•使用表名可以提高效率。

•在不同表中具有相同列名的列可以用別名加以區分。

表的別名

select e.employee_id, e.last_name, e.department_id,

d.department_id, d.location_id

from   employees e , departments d

where  e.department_id = d.department_id;

非等值連線

select e.last_name, e.salary, j.grade_level

from   employees e, job_grades j

where  e.salary

between j.lowest_sal and j.highest_sal;

外連線select e.last_name, e.department_id, d.department_name

from   employees e, departments d

where  e.department_id(+) = d.department_id ;

注意(+)加號出現在缺少那一項

自連線select worker.last_name || ' works for '

|| manager.last_name

from   employees worker, employees manager

where  worker.manager_id = manager.employee_id ;

叉集•使用cross join 子句使連線的表產生叉集。

select last_name, department_name

from   employees

cross join departments ;

和笛卡爾集是相同的。

自然連線

•natural join 子句,會以兩個表中具有相同名字的列為條件建立等值連線。

•在表中查詢滿足等值條件的資料。

•如果只是列名相同而資料型別不同,則會產生錯誤。

select department_id, department_name,

location_id, city

from   departments

natural join locations ;

使用 using 子句建立連線

•在natural join 子句建立等值連線時,可以使用 using 子句指定等值連線中需要用到的列。

•使用 using 可以在有多個列滿足條件時進行選擇。

•不要給選中的列中加上表名字首或別名。

•natural join 和 using 子句經常同時使用。

select e.employee_id, e.last_name, d.location_id

from   employees e join departments d

using (department_id) ;

使用on 子句建立連線

•自然連線中是以具有相同名字的列為連線條件的。

•可以使用 on 子句指定額外的連線條件。

•這個連線條件是與其它條件分開的。

•on 子句使語句具有更高的易讀性。

select e.employee_id, e.last_name, e.department_id,

d.department_id, d.location_id

from   employees e join departments d

on     (e.department_id = d.department_id);

使用on 子句建立多表連線

select employee_id, city, department_name

from   employees e

join   departments d

on     d.department_id = e.department_id

join   locations l

on     d.location_id = l.location_id;

內連線 與 外連線

•內連線只返回滿足連線條件的資料。

•兩個表在連線過程中除了返回滿足連線條件的行以外還返回左(或右)表中不滿足條件的行 ,這種連線稱為左(或右) 外聯接。

•兩個表在連線過程中除了返回滿足連線條件的行以外還返回兩個表中不滿足條件的行 ,這種連線稱為滿 外聯接。

左外聯接

select e.last_name, e.department_id, d.department_name

from   employees e

left outer join departments d

on   (e.department_id = d.department_id) ;

右外聯接

select e.last_name, e.department_id, d.department_name

from   employees e

right outer join departments d

on    (e.department_id = d.department_id) ;

注:也可在連線條件的一方加(+)

左外聯接

select e.last_name, e.department_id, d.department_name

from   employees e

where

e.department_id = d.department_id(+) ;

右外聯接

select e.last_name, e.department_id, d.department_name

from   employees e

where

e.department_id (+)= d.department_id;

滿外連線

select e.last_name, e.department_id, d.department_name

from   employees e

full outer join departments d

on   (e.department_id = d.department_id) ;

增加連線條件

select e.employee_id, e.last_name, e.department_id,

d.department_id, d.location_id

from   employees e join departments d

on     (e.department_id = d.department_id)

and    e.manager_id = 149 ;

多表查詢 多表查詢 多表查詢

查詢語法 select 列表名稱 from 表明列表 where 笛卡爾積 有兩個集合a,b,取這兩個集合的所有組成情況 要完成多表查詢,需要消除無用的資料 多表查詢分類 1 內連線查詢 1 隱式內連線 使用where消除無用的資料 例子 select t1.name,t1.gender,t2.na...

5 第 5 章 迴圈

1.可以用迴圈來驗證輸入。在迴圈前的第一次讀取操作,稱為啟動讀取,如果後續還需要繼續讀取,則語句應該在迴圈中。2.在實際程式設計應用中,不建議在 cout 語句中放置遞增或遞減運算子 因為容易出錯 3.需要計數時使用計數器,需要累計彙總時使用累加器。4.標記符號是乙個特殊值,指示著值列表的結尾。一般...

ORACLE 第4節 多表查詢

學習目標 使用 等值和 不等值連線在select語句中查詢多個表中的資料。使用 自連線。使用外連線查詢不滿足連線條件的資料 oracle 連線等值連線 使用連線在多個表中查詢資料。select table1.column,table2.column from table1,table2 where ...