等值連線
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 ...