ORACLE 多表 查詢作業

2021-08-20 10:04:02 字數 3354 閱讀 2188

--查詢和scott相同部門的員工的姓名ename和雇員日期hiredate

select * from emp

--1.首先查詢出scott的部門編號 20

select deptno from emp where ename ='scott';

select e.ename,e.hiredate,e.deptno

from emp e

where deptno =(select deptno from emp where ename ='scott');

--2.查詢在部門為loc為newyork的部門工作的員工姓名ename,部門名稱dname和崗位名稱job

select deptno from dept where loc ='new york';

select e.ename,d.dname,e.job,d.loc from emp e,dept d

where e.deptno = d.deptno

and e.deptno =(select deptno from dept where loc ='new york')

--3.查詢上司是king的員工姓名(ename)和工資(sal)

select empno from emp where ename ='king';

select e.ename,e.sal,e.mgr from emp e where mgr =

(select empno from emp where ename ='king');

--4.查詢與姓名中包含字母u的員工在相同的部門的員工的資訊

select deptno from emp where ename like '%u%'; --30;

select * from emp where deptno in

(select deptno from emp where ename like '%u%');

--1.查詢所有雇員姓名和部門的名稱(使用left join,inner join,right join)

select e.ename,d.dname from emp e

left join dept d

on e.deptno = d.deptno

--2.顯示每歌員工的員工姓名,部門名稱,職務,工資 和工資等級 資訊

(使用left join,inner join,right join)

select e.ename,d.dname,e.job,e.sal,s.grade

from salgrade s,dept d left join emp e

on d.deptno = e.deptno

where e.sal>=s.losal

and e.sal <=s.hisal;

--綜合訓練題

--1.取得每個部門最高薪水的人員的姓名

select ename,sal,deptno from emp where sal in(

(select max(sal) from emp where deptno = 10),

(select max(sal) from emp where deptno = 20),

(select max(sal) from emp where deptno = 30),

(select max(sal) from emp where deptno = 40))

order by deptno;

--第二種

select e.ename,e.sal,e.deptno from emp e,

(select max(sal) m_sal,deptno from emp group by deptno) c

where e.deptno = c.deptno

and e.sal = c.m_sal;

--第三種  相關子查詢

--1.先執行主查詢,獲取emp表的deptno欄位

--2.將deptno欄位傳遞到子查詢中]

--3.子查詢將結果過  返回給主查詢,由主查詢根據子查詢的而結果進行where字句的計算

--從而得到最終的查詢的結果

--4.依次迴圈這個過程,直到所有的查詢執行的結束

select e.ename,e.sal,e.deptno from emp e

where e.sal =(select max(sal)from emp where deptno = e.deptno);

--2.列出受僱日期早於直接上級的所有的員工的編號,姓名和部門名稱

--第一種

select e.empno,e.ename,d.dname

from emp e inner join emp em

on e.mgr = em.empno

and e.hiredate 'scott';

--5.查詢出某個員工的上級主管,並要求求出這些主管中薪水超過3000的

select e.ename,e.sal,e1.ename,e1.sal from emp e,emp e1

where e1.empno = e.mgr and e1.sal >3000;

--6.找出部門10中所有經理(manager)和部門20中中所有辦事員 (clerk)的詳細資料

select * from emp where(deptno = 10 and job ='manager')

or(deptno = 20 and job ='clerk');

--7.找出12年前受僱員工,並按照分組,進行倒序

select * from emp where(sysdate-hiredate)/365>12

order by hiredate desc;

--8.列出從事一種工作但屬於不同部門的員工的一種組合

select distinct e.ename,e.job from emp e,emp m

where e.deptno !=m.deptno

and e.job = m.job

--9.查詢有獎金的所有員工的姓名 獎金以及所在部門

select * from emp

select e.ename,e.comm,d.dname from emp e,dept d

where e.deptno = d.deptno

and comm is not null

and comm>0;

--10.給任職日期超過25年的員工加薪10%

select * from emp where(sysdate -hiredate)/365>25

update emp set sal = sal *1.1 where (sysdate - hiredate)/365>25

select * from emp

Oracle 多表查詢

sql 外連線 sql 按部門統計員工人數 部門號 部門名稱 人數 sql select d.deptno,d.dname,count e.empno 2 from dept d,emp e 3 where d.deptno e.deptno 4 group by d.deptno,d.dname ...

Oracle 多表查詢

等值和不等值連線查詢 為了避免笛卡爾集,可以在 where 加入有效的連線條件。oracle 連線多表查詢 在 where 子句中寫入連線條件。在表中有相同列時,在列名之前加上表名字首 select table1.column,table2.column from table1,table2 whe...

oracle 多表查詢

多表查詢 多表查詢,又稱表聯合查詢,即一條sql語句涉及到的表有多張,資料通過特定的連線進行聯合顯示.笛卡爾積 在數學中,兩個集合x和y的笛卡尓積 cartesian product 又稱直積,表示為x y.假設集合a 集合b 則兩個集合的笛卡爾積為。在資料庫中,如果直接查詢倆張表,那麼其查詢結果就...