然後得麻煩了,其實每天第一件事,不是急着操作數據庫,而是做好準備
工作設置一條回滾語句(即反悔語句)
回滾語句:rollback to aa;
2.oracle表的默認格式,不是我們遵循的那種模式,就需要修改表中的日期的默認格式
語句:alter session set nls_date_format='yyyy-mm-dd';
3.查詢不包涵重複的數據
語句:select distinct(關鍵字) table.列名 from table(表名);
4.解決計算時有空值的問題
oracle計算時,如果有一個數位空時,則計算的結果都爲空
解決方法:使用nvl(列名,0)函數解決
例: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;