oracle 基本語法 2

2021-06-02 14:39:56 字數 3561 閱讀 8680

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...