1:等值連線
迪卡爾集連線
select ename, a.deptno as a_deptno,b.deptno as b_deptno ,b.dname as 部門
from emp a, dept b
等值連線
select ename, a.deptno as a_deptno,b.deptno as b_deptno ,b.dname as 部門
from emp a, dept b
where a.deptno = b.deptno;
2:非等值連線,在emp表和salgrade表中查詢員工的姓名,工資,等級,工資上線,工資下線
select ename as 姓名, sal as 工資, grade as 工資等級,losal as 工資上線,hisal as 工資下線
from emp, salgrade
where sal between losal and hisal;
3:外連
右外連select e.ename, d.dname, e.deptno
from emp e,dept d
where e.deptno = d.deptno(+);
左外連與右外連相反
以hr登陸查詢表employees 和departments 表
select first_name as 姓名, department_name as 部門名稱, d.department_id as 部門編號
from employees e, departments d
where e.department_id= d.department_id(+) ;
4:自連:在同乙個表中查詢每個員工及上司的工號和姓名
select a.empno as 員工編號, a.ename as 員工姓名, a.mgr as 上司的員工編號, b.ename as 上司姓名
from emp a, emp b
where a.mgr = b.empno;
5:sql99
交叉連線 cross join------相當於迪卡爾集
select e.ename,d.dname
from emp e cross join dept d;
自然連線 natural join------相當等值連線
select e.ename, d.dname
from emp e natural join dept d;
using子句-----使用同名列查詢
select e.ename, d.dname
from emp e join dept d
using (deptno);
on子句 ------當列名不同時用on子句
用on查詢兩張表
select e.ename, d.dname
from emp e join dept d
on e.deptno = d.deptno;
用on查詢多張表
select e.ename, d.dname
from emp e join dept d
on e.deptno = d.deptno
join 第三個表
on 列1 = 列2;
內連線(inner join)-------內連線只返回滿足連線條件的資料
select employee_id, last_name, salary, department_id, department_name
from employees inner join departments using(department_id);
左外連select employee_id, last_name, salary, department_id, department_name
from employees left join departments using(department_id);
右外連select employee_id, last_name, salary, department_id, department_name
from employees right join departments using(department_id);
滿外連select employee_id, last_name, salary, department_id, department_name
from employees full outer join departments using(department_id);
子查詢------------
查詢出工資比scott高的人
select ename, sal from emp
where sal>
(select sal from emp where ename='scott');
查詢那些人和scott相同職位的人
select ename, job from emp
where job=
(select job from emp where ename='scott')
and ename <> 'scott';
any的用法 < any意味著小於最大、> any大於最小
select empno, ename, sal, job
from emp
where salall的用法 < all:小於所有,即小於最小、> all:大於所有,即大於最大
select empno, ename, sal, job
from emp
where sal oracle的多表查詢與子查詢 子查詢 在乙個查詢的內部還包括另乙個查詢,則此查詢稱為子查詢。sql的任何位置都可以加入子查詢。自連線其實就是站在不同的角度把一張表看成多張表。範例 查詢比 7654 工資高的雇員 分析 查詢出 7654 員工的工資是多少,把它作為條件 範例 查詢出比雇員 7654 ... 兩張表沒有連線條件時 這個看情況用,資料多的時候沒有做過驗證 select a.b.from select row number over order by id as rn,from a a left outer join select row number over order by id as... 連線查詢分為 內連線 相等內連線,非等內連線,自連線 外連線 左外連線,右外連線,全外連線 交叉連線,自然連線 一 內連線 1 相等內連線 使用等號 指定連線條件的連線查詢 使用where關鍵字的連線查詢 select from 表1,表2 where 表1.欄位1 表2.欄位1 使用join關鍵字...Oracle的多表查詢與子查詢
Oracle多表連線查詢
oracle多表連線查詢