oracle中常用關鍵字(函數)用法與比較

Union:將兩個查詢的結果集相加,並過濾重複的數據,同時進行默認規則的排序。
用法:select * from t1 union select * from t2;

 

Union all:將兩個查詢的結果集相加,不管結果中是否有重複全部顯示,不進行排序。
用法:select * from t1 union all select * from t2;

 

Intersect:對兩個結果集進行交集操作,不包括重複行,同時進行默認規則的排序;
用法:select * from a intersect select * from b


Minus:將兩個結果集中相同的數據刪除,同時進行默認規則(以結果集的第一個字段)排序。
用法:select * from a minus select * from b

 

Decode:多條件分支判斷,8i版本中保留下來的語法。該語法中最後一個參數表示該字段的默認值。
用法:SELECT DECODE(OWNER, 'LOCALSYSTEM', 'LOCAL', 'OTHERSYSTEM', 'OTHER', 'USER') AS OWNER FROM T;

 

Case:多條件分支判斷。與Decode類似。9i版本中新增語法。執行效率比Decode要好。
用法:Select CASE owner when 'LOCALSYSTEM' then 'SYSTEM' when 'OTHERSYSTEM' then 'OTHER' ELSE  'USER' END  FROM T;

 

Dual:一個虛擬表,用來構成select的語法規則,oracle保證dual裏面永遠只有且只返回一條記錄。
不能把DUAL表的UPDATE,INSERT,DELETE權限隨意釋放出去,這樣對於系統是很危險的
用法1: select to_char(sysdate,''yyyy-mm-dd hh24:mi:ss'') from dual;
用法2:select 1+2 from dual;

 

Truncate:在功能上與不帶 WHERE 子句的 DELETE 語句相同:二者均刪除表中的全部行。但 TRUNCATE TABLE 比 DELETE 速度快,且使用的系統和事務日誌資源

少。TRUNCATE TABLE 通過釋放存儲表數據所用的數據頁來刪除數據,並且只在事務日誌中記錄頁的釋放。
用法:Truncate table t_user;

 

Delete: 語句每次刪除一行,並在事務日誌中爲所刪除的每行記錄一項。

 

Drop:刪除表定義和表中的數據。

 

Exsits:使用EXISTS,Oracle會首先檢查主查詢,然後運行子查詢直到它找到第一個匹配項,這就節省了時間。
用法:SELECT * FROM T1 WHERE exists(select * from T2 where T1.a=T2.a);

 

In:Oracle在執行IN子查詢時,首先執行子查詢,並將獲得的結果列表存放在一個加了索引的臨時表中。
在執行子查詢之前,系統先將主查詢掛起,待子查詢執行完畢,存放在臨時表中以後再執行主查詢。
這也就是使用EXISTS比使用IN通常查詢速度快的原因。
用法:select * from T1 where T1.a in (select T2.a from T2)

發佈了76 篇原創文章 · 獲贊 1 · 訪問量 9335
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章