ORACLE SQL 多變查詢

2021-09-25 08:58:06 字數 2379 閱讀 8558

迪卡爾集

笛卡爾集會在下面條件下產生:

省略連線條件

連線條件無效

所有表中的所有行互相連線

為了避免笛卡爾集, 可以在 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...