1. 程式人生 > >oracle的一些小零碎

oracle的一些小零碎

例:select distinct e.sal*12+nvl(e.comm,0) as "年工資",e.ename from emp e;

5.oracle表的複雜查詢
①如果在select語句同時包含有group by,having ,order by 那麼他們的順序是
group by,having ,order by


②在選擇列表中如果有列、表示式、和分組函式,那麼這些列和表示式必須有一個
出現在group by 子句中,否則就會報錯

例:select deptno,avg(sal),max(sal) fro emp group by deptno having avg(sal) < 2000;

6.多行子查詢
多行子查詢返回多行資料的子查詢(多行子查詢只能使用'in'不能使用'=')
例:查詢和部門號10的工作的僱員的名字、崗位、工資、部門號

select e.ename,e.job,e.sal,e.deptno from emp e
 where e.job
in(select e.job from emp e where e.deptno ='10');

7.多列子查詢
多列子查詢則是值查詢返回多個列資料的子查詢語句
例:查詢與smith的部門和崗位完全相同的所有僱員
select * from emp where (deptno,job)=(select deptno,job from emp e where ename='SMITH');

8.oracle給表取別名不能加as,給列名加別名可以加as

9.oracle分頁,一共有3種方式
①rownum分頁
(select * from emp)

②顯示rownum[oracle分配的]
select e.*,rownum as ru from (select * from emp ) e;

③查詢前N行的記錄
例:前五行的記錄
select * from (select e.*,rownum as ru from (select * from emp ) e where rownum <= 10) where rownum <= 5;

10.分頁:查詢第五行到第十行之間的記錄
select * from (select e.*,rownum rn  from (select * from emp)  e where rownum <=10)  where rn <= 5;

11.用查詢結果建立新表
create table mytable(ename,job,mgr,sal) select  e.ename,e.job,e.mgr,e.sal
from emp e;