迪卡爾集
笛卡爾集會在下面條件下產生:
省略連線條件
連線條件無效
所有表中的所有行互相連線
為了避免笛卡爾集, 可以在 where 加入有效的連線條件。
使用連線多表連線查詢
在 where字句寫加入連線條件
在表中有相同列事,在表名之前加上表名字首
等價連線
select e.department_id,d.department_id,l.city
from employees e,departments d,locations l
where e.department_id = d.department_id
and l.location_id = d.location_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,d.department_id
from employees e, departments d
where e.
department_id(+
)= d.department_id ;
交集
使用cross join 子句使連線的表產生叉集。
叉集和笛卡爾集是相同的。
select last_name, department_name,employee_id
from employees cross join departments --不能寫on
自然連線
natural join 子句,會以兩個表中具有相同名字的列為條件建立等值連線。
在表中查詢滿足等值條件的資料。
select department_id, department_name,location_id, city
from departments natural join locations
使用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,l.location_id
from employees e join departments d
on e.department_id = d.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
full
outer
join departments d
on(e.department_id = d.department_id)
;
oracle sql查詢日曆
查詢當前時間所在月份的日曆 select sum d1 星期日,sum d2 星期一,sum d3 星期二,sum d4 星期三,sum d5 星期四,sum d6 星期五,sum d7 星期六 from select decode d,1,l d1,decode d,2,l d2,decode d...
oracleSQL基本查詢
create table dept deptno number primary key,dname nvarchar2 50 log nvarchar2 50 select from dept for update create table enp empno number primary key,...
ORACLE SQL多表查詢
使用連線在多個表中查詢資料 在 where 子句中寫入連線條件 在表中有相同列時,在列名之前加上表名字首 1 等值連線 2 非等值連線 in 例 查詢每個員工的 last name 和 grade level 在 job grades 表中 非等值連線 select last name,salary...