程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> Oracle數據庫 >> Oracle數據庫基礎 >> Oracle數據庫開發技術經驗淺談(1)

Oracle數據庫開發技術經驗淺談(1)

編輯:Oracle數據庫基礎

導讀: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。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved