HTML Encoder

HTML Encoder

2013年6月12日 星期三

[筆記]Oracle database SQL筆記

上學期Databse的期末專案是用Oracle SQL建資料庫
有遇到一些SQL語法上的差異 和一些心得

簡單紀錄如下


1.查看某個Table的column

describe (table_name);

2. 查看所有TABLE
select * from tab;


3.
DROP TABLE後,該Table不會真的刪掉
而是存在垃圾桶裡
如果這時輸入命令
select * from tab;
會發現有亂碼的table存在 那些就是在垃圾桶中 要將那些table完全清掉請使用
PURGE RECYCLEBIN;

其他操作詳見: http://www.oracle.com/technetwork/articles/sql/week5-10gdba-095853.html 

4. 要將Table全清掉的方法
沒有Drop all table之類的指令,但我找到一個workaround
輸入下列SQL命令 會在Console印出刪除各Table的SQL命令
之後再手動輸入這些指令就好
 select 'drop table '||table_name||' cascade constraints;' from user_tables; 

參考資料: http://www.wretch.cc/blog/phoenixwu/16103368 


5. 別名(Alias)使用上的不同

Oracle SQL可省略AS 關鍵字
但如果已經在SELECT裡使用AS關鍵字,那FROM裡必須去掉AS才行
範例:
SELECT CL.id AS CL_id , CL.name AS CL_name, CL.age AS CL_age, CL.address AS CL_address, CL.email as CL_email, PL.*
FROM CLIENT CL, CLIENT_QUOTE CQ, QUOTE Q, POLICY PL
WHERE CL.id = CQ.client AND CQ.quote = Q.id AND PL.quote = Q.id;

6.
nvl()這函數可以將取得null值時轉換成指定的預設值 用法: nvl(column,default) as alias 這個在需要作計算時很好用,可以把null轉成0讓aggregate function正常運算 範例:  
SELECT taxid, nvl(income,0) as income
FROM COMPANY

7. 如果Aggregate function內有多個屬性
例如我想要count(colA, colB, colC) 在Oracle SQL要用||區隔

SELECT agency
FROM sell
GROUP BY agency
HAVING COUNT(distinct p_company||p_code||p_limit||p_coverage)>10

8. 可用條件rownum 來指定只取得第幾個欄位
SELECT name
FROM agency
WHERE rownum='1'
ORDER BY taxid

沒有留言:

張貼留言