1. 程式人生 > >Oracle操作筆記——資料庫基本操作及SQL命令

Oracle操作筆記——資料庫基本操作及SQL命令

文章目錄

單表查詢

查詢結果拼接用||

SELECT  ename ||
'的工作是' || ejob AS msg from emp

條件判斷用CASE WHEN

限制返回的行數用rownum

SELECT  * from product WHERE rownum <= 2;

選擇兩行中的第二行

SELECT * FROM (SELECT rownum AS sn, product.* FROM product WHERE rownum <= 2) WHERE sn = 2;

隨機返回用dbms_random.value()

SELECT * FROM 
   ( SELECT * FROM product ORDER
BY dbms_random.value()) WHERE rownum <= 3;

模糊查詢用% _ \

對結果排序用ORDER BY 欄位名(逆序在欄位名後加DESC)

對第三列排序用ORDER BY 3

查詢出子串用substr

查詢出str的後4為用substr(str, -4)

對應字元一一替換用TRANSLATE(expr,from_string,to_string)

將字串中的數字去掉

translate(str, ‘-0123456789’, ‘_’)

將空值放在前面用NULLS FIRST

SELECT a,b FROM projuct ORDER BY 2 NULLS FIRST
SELECT a,b FROM projuct ORDER BY 2 NULLS LAST

將符合條件的放前面後再排序用CASE WHEN後在ORDER BY

也可以ORDER BY後緊跟CASE WHEN

多表查詢

合併多個數據集UNION ALL(UNION會去掉重複資料)

左表為主表LEFT JOIN

右邊沒有資料的用NULL代替

select left.*, right.* from left LEFT JOIN right ON (left.id = right.id);
--也可以用
select left.*, right.* from left, right where left.id = right.id(+);

右表為主表RIGHT JOIN

左邊沒有資料的用NULL代替

select left.*, right.* from left RIGHT JOIN right ON (left.id = right.id);
--也可以用
select left.*, right.* from left, right where where left.id(+) = right.id;

所有資料FULL JOIN

select left.*, right.* from left FULL JOIN right ON (left.id = right.id);

無(+)寫法

半連線SEMI JOIN

只顯示左表資料

插入更新刪除

阻止對某列的插入可以建立VIEW來操作

檢視

從一張表或多張表中選取特定的欄位呈現給使用者。

建立檢視CREATE VIEW 檢視名 AS …

刪除檢視DROP VIEW 檢視名