--查詢和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 則兩個集合的笛卡爾積為。在資料庫中,如果直接查詢倆張表,那麼其查詢結果就...