導讀:Oracle數據庫作為大型數據庫管理系統,近年來一直占有世界上高端數據庫的最大份額,其強大而完善的數據庫管理功能,以及Oracle公司推陳出新的不斷努力,一直成為IT業界矚目的焦點。嶺澳核電站的數據庫平台采用了ORACLE7.3作為後端平台,前端選擇了Oracle公司的DEVELOPER 2000 及DESIGNER 2000作為開發工具,采用了目前流行的CLIENT/SERVER模式。下文中是開發人員在平時的開發工作中總結出的經驗,現在拿出來供大家參考學習。
一. Oracle SQL PLUS 使用技巧:
----①查找重復記錄:
[pre]SELECT DRAWING,DSNO FROM EM5_PIPE_PREFAB
WHERE ROWID!=(SELECT MAX(ROWID) FROM EM5
_PIPE_PREFAB D
WHERE EM5_PIPE_PREFAB.DRAWING=D.DRAWING AND
EM5_PIPE_PREFAB.DSNO=D.DSNO);
[/pre]
----執行上述SQL語句後就可以顯示所有DRAWING和DSNO相同且重復的記錄。
----刪除重復記錄:
[pre]DELETE FROM EM5_PIPE_PREFAB
WHERE ROWID!=(SELECT MAX(ROWID) FROM EM5
_PIPE_PREFAB D
WHERE EM5_PIPE_PREFAB.DRAWING=D.DRAWING AND
EM5_PIPE_PREFAB.DSNO=D.DSNO);
[/pre]
----執行上述SQL語句後就可以刪除所有DRAWING和DSNO相同且重復的記錄。
----② 快速編譯所有視圖
----當在把數據庫倒入到新的服務器上後(數據庫重建),需要將視圖重新編譯一遍,因為該表空間視圖到其它表空間的表的連接會出現問題,可以利用PL/SQL的語言特性,快速編譯。
[pre]SQL >SPOOL ON.SQL
SQL >SELECT ‘ALTER VIEW ‘||TNAME||’COMPILE;’ FROM TAB;
SQL >SPOOL OFF
[/pre]
然後執行ON.SQL即可。SQL >@ON.SQL
當然,授權和創建同義詞也可以快速進行,如:
[pre]SQL >SELECT ‘GRANT SELECT ON ’
||TNAME||’ TO USERNAME;’ FROM TAB;
SQL >SELECT ‘CREATE SYNONYM
‘||TNAME||’ FOR USERNAME.’||TNAME||’;’ FROM TAB;
[/pre]
③ 用外聯接提高表連接的查詢速度
在作表連接(常用於視圖)時,常使用以下方法來查詢數據:
[pre]SELECT PAY_NO, PROJECT_NAME
FROM A
WHERE A.PAY_NO NOT IN (SELECT PAY_
NO FROM B WHERE VALUE >=120000);
[/pre]
----但是若表A有10000條記錄,表B有10000條記錄,則要用掉30分鐘才能查完,主要因為NOT IN要進行一條一條的比較,共需要10000*10000次比較後,才能得到結果。該用外聯接後,可以縮短到1分左右的時間。
----⑤ 怎樣在數據庫觸發器中使用列的新值與舊值
----在數據庫觸發器中幾乎總是要使用觸發器基表的列值,如果某條語句需要某列修改前的值,使用:OLD就可以了,使用某列修改後的新值,用:NEW就可以了。如:OLD.DEPT_NO,:NEW.DEPT_NO。