1.條件判斷語句
case
when (條件1)
then (條件成立返回什麼1)
when (條件2)
then (條件成立返回什麼2)
else (不成立返回什麼)
end;
2.判斷
decode(條件值,'值1','返回值1','值2','返回值2',...,'預設值');
條件值 = 值1 就返回值1,=值2 就返回值2,都不等於就返回預設值。
3.rownum (偽列)
4.row_number() over (order by col desc) (偽列)
例:select xfbh, row_number() over(order by col) from t_hjxf_hjd_jbxx
產生偽列並按col欄位排序
5.grouping(值)
(使用在group by中)
如果'值'為空就返回1,不為空就返回0。
6.distinct(這個關鍵字來過濾掉多餘的重覆記錄只保留一條)
例:select distinct dw from t_oa_txlxx (過濾掉dw的字段的重覆記錄)
7.union (all) 連線 (並集) (相同的表結構才能連線)
union all
連線全部包括重複的記錄
union
連線不包括重複的記錄
例:select * from t_hjxf_hjd_jbxx
union all
select * from t_hjxf_hjd_jbxx
8.intersect 表取交集 (交集)
select * from t_hjxf_hjd_jbxx
intersect
select * from t_hjxf_hjd_jbxx
9.minus 表取差集 (差集)
select * from t_hjxf_hjd_jbxx
minus
select * from t_hjxf_hjd_jbxx
10.nvl(a,b) 如果a為空就返回b,如果不為空就返回a
select nvl('aa','bb') from dual;
11.group by (rollup|cube)
rollup 上鑽,如rollup(a,b)的結果集相當於以下三部分的合集:group by a,group by a,b,不加group by子句的組合函式結果。
cube立方體,如cube(a,b) 的結果相當於a,b全部可能組合group by結果合集:group by a,group by b,group by ab,不加group by子句的組合函式結果。
舉例:sql> select * from t1;
a b value
---------- ---------- ----------
111 1 9000
123 2 7000
111 2 1000
122 3 2000
123 5 3000
135 3 4000
6 rows selected.
sql> select a,b,sum(value) from t1 group by rollup(a,b);
a b sum(value)
---------- ---------- ----------
111 1 9000
111 2 1000
111 10000
122 3 2000
122 2000
123 2 7000
123 5 3000
123 10000
135 3 4000
135 4000
26000
11 rows selected.
sql> select a,b,sum(value) from t1 group by cube(a,b);
a b sum(value)
---------- ---------- ----------
26000
1 9000
2 8000
3 6000
5 3000
111 10000
111 1 9000
111 2 1000
122 2000
122 3 2000
123 10000
123 2 7000
123 5 3000
135 4000
135 3 4000
15 rows selected.
12.add_months(time,months)函式可以得到某一時間之前或之後n個月的時間
例:select add_months(sysdate,-6) from dual; 該查詢的結果是當前時間半年前的時間
select add_months(sysdate,6) from dual; 該查詢的結果是當前時間半年後的時間
13.with as 用法
其實就是把一大堆重複用到的sql語句放在with as 裡面,取乙個別名,後面的查詢就可以用它
這樣對於大批量的sql語句起到乙個優化的作用,而且清楚明了
例:sql1 as (select to_char(a) s_name from test_tempa),
sql2 as (select to_char(b) s_name from test_tempb where not exists (select s_name from sql1 where rownum=1))
select * from sql1
union all
select * from sql2
union all
select 'no records' from dual
where not exists (select s_name from sql1 where rownum=1)
and not exists (select s_name from sql2 where rownum=1);
例:with a as (select * from test)
select * from a;
Oracle基本語法
1 window下啟動oracle服務 net start oracle服務名 net start oracle的 名 2 建立使用者 create user 建立使用者的名稱 identified by 建立使用者的密碼 3 修改使用者口令 alter user 需要修改使用者 identifie...
Oracle基本語法
1 表 create table test names varchar2 12 dates date,num int,dou double 2 檢視 create or replace view vi test as select from test 3 同義詞 create or replace ...
Oracle基本語法
檢視表結構 descride 修改表型別 alter table tablename modify.alter table emp modify empname char 55 修改表字段 alter table tablename add.alter table emp add enote1 ch...