Oracle操作筆記——資料庫基本操作及SQL命令
阿新 • • 發佈:2018-12-23
文章目錄
單表查詢
查詢結果拼接用||
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來操作
檢視
從一張表或多張表中選取特定的欄位呈現給使用者。