天地(常州)自動化股份有限公司 劉建慶
ORACLE數據庫全稱為Or acl e Dat abase,是甲骨文公司開發的一種關系數據庫管理系統,該技術在整個數據庫領域一直處于領先水平,是國內外應用廣泛的數據庫管理系統。ORACLE數據庫屬于一種大型數據庫產品,其以SQL高級結構化查詢語言為基礎,支持關系模型的數據庫,系統操作方便,可移動性好,功能強,可在各種大、中、小以及微機環境中運行,不僅可以支持分布式客戶/服務器應用、集中式結構,同時也具有分布式處理功能,可分布到多個平臺上運行。ORACLE數據庫被認為是世界上流行的一種高效、可靠以及科研適應高吞吐量的數據庫管理系統。下面對ORACLE數據庫在煤炭企業中的主要應用操心進行探討。
ORACLE數據庫具有強大的數據檢索功能,用戶利用ORACLE數據庫可以快速的進行數據檢索,準確找到自己所需要的數據。而且ORACLE數據庫還具有較強的數據管理功能,可以有效保證數據的一致性、完整性以及數據信息的安全性。在煤炭其他的各個部門中數據量類型多,數量大,而且數據關系復雜,要進行數據分析和數據處理就需要借助Sql pl us工具,通過各種命令和函數的應用來實現數據操作。下面介紹ORACLE數據庫中表連接查詢、數據刪除、查找以及相關函數的具體應用。
ORACLE數據庫中表連接查詢常用到的查詢方法和命令是:
sql>select zd1,zd2,zd3,zd4 from表1 where表1.zd1 not in(select zd1 from表2);
因為NOT IN運算符的邏輯測試速度是相當慢的,所以當所查詢的表1和表2中的數據記錄較多,甚至有上千條、上萬條記錄時,仍采用才命令進行數據查詢就需要較長的時間才能完成。因此需要對NOT IN運算符進行替換,采用外鏈接進行查詢,如此可大大縮短查詢時間,即使在數據記錄較多的情況下也比較方便。
如果需要將表1和表2中相同的數據記錄刪除,可以采用命令:
SQL>delete from a where exists (select*from b where a.zd1=b.zd1 and b.zd2=zd2);
SQL>delete from a where(zd1,zd2) in (select zd1,zd2 from b);
當表中的數據量不大的情況下可以采用in子句命令,如果表中的數據量較大,且多至數十萬條時采用in字句命令時速度回特別慢,所以此時有必要采用sel ect 子句命令。
在ORACLE數據庫的應用中經常會遇到查找多個表中不同的數據記錄,例如查找表1有,但表2中沒有的數據記錄,此時在選擇查找命令時需考慮的到速度問題,通過對子句in命令和sel ect子句命令的比較,通常選擇以下命令比較理想:
SQL>select zd1 from a where not exists(select zd1 from b where a.zd1=b.zd1);
在ORACLE數據庫的應用中,如果一個表中某一行的某列沒有值,便稱其為NULL(空值)。NOLL通常用來表示實際值未知或者無意義的情況。對于ORACLE數據庫中任意一種類型的列,只有沒有使用NOT NULL(非空)或者主鍵完整性受限,都允許存在空值。如果用戶在實際應用操作中忽略了空值,很可能會導致不必要的麻煩。例如在20個表的數據記錄中,累計記錄為200,處于NULL值狀態的為10個,如果使用函數avg()來運算,因為分母中不包含NULL值,所以結果是20。
采用nv1()函數可以解決ORACLE數據庫中存在NULL值的任何類型的數據計算。命令格式為nv1(數值型字段名,0)。nv1()函數用0來表示字段中可能產生的NULL值。例如:
SQL>up d ate表名set zd 1=nv 1(zd 2,0)+nv 1(zd3,0)+nv1(zd4,0)
nv1()函數在ORACLE數據庫中的應用可以有效避免因為NULL值存在導致的計算錯誤,這是在實際應用中必須要注意的一點。
ORACLE數據庫的應用過程中有時候為了完成應用要求需要將數據庫格式轉換為其他格式,例如foxpro格式或者dbase格式等等。下面簡單介紹ORACLE數據庫轉換為foxpro/dbase格式的方法。首先利用Sql plus工具提取ORACLE數據庫的信息數據,然后利用命令spool(重定向命令)將提取出來的數據保存在一個文本格式(temp.txt)的文件中。最后再編輯一個sql文件來運行就可以實現。Sql文件的編輯例子:
sql> @文件名:
此文件主體內容為:
spool c:/usxer/temp.txt
select zd1,zd2,zd3,zd4 from表where條件子句;
spool off
然后利用exce1軟件將所生成的文件打開,根據文本導入向導提示把先前的文本格式(temp.txt)文件轉化為exce1格式文件(temp.xls)。最后利用Foxpro的導入功能將exce1格式文件(temp.xls)打開,并將其轉換為數據庫文件(temp.dbf)。在數據庫格式的轉換過程中,如果將中間exce1格式的轉換非常重要,如果將這一轉換步驟省去極易造成數據轉換不完整的情況。ORACLE數據庫格式向Dbase格式轉換可以先在Dbase狀態下建立一個結構與Oracle相同的數據庫,將此數據庫打開后再利用appe from temp sdf命令進行處理即可實現格式轉換。
ORACLE數據庫自身提供有一個功能強大的管理器(oracle enterprise mananger),其中的數據管理項可以將數據庫以外的數據(例如dbf/Foxpro格式數據)導入到ORACLE數據庫中,然后利用SQL*Loader處理即可。
Foxpro格式轉換為Oracle格式首先需要將數據導出Foxpro數據庫,執行操作“打開file/export, 選擇delimited text,在to項中給出需要導出數據庫的數據文件名,在fro項選擇要導出的文件,并選擇文件存儲位置”。將Options對話框各項設置完成后點擊“OK”即可將文件導出。然后將數據文件編輯為控制文件格式,再將數據上傳到數據庫服務器即可。如果Foxpro的memo字段文件需要進行格式轉換首先要利用copy memo命令將文件導出到文本,然后再執行上述轉換操作。
dbf格式向Oracle格式轉換首先需要創建一個相同結構的oracle table,將dbase數據
通過copy to文件名sdf命令轉換為源文件格式,然后編輯一個控制文件(.ctl)來定義源文件的路徑、目標表文件名等屬性。下面給出控制文件(.ctl)的源程序(fe0.ctl):
-options(errors=200,rows=1320)
-continue_load data
load data
infi le”a:/temp.txt”
into table tem
append
(dhhm position(41:47)char,
hfny constant′200011′
chf position(48:58)decimal external nullif chf=
blanks,
shf position(59:69)decimal external nullif shf=
blanks,
nhf position(70:79)decimal external nullif nhf
=blanks
上述操作完成之后啟動ORACLE數據庫的功能管理器,并在數據管理項中的(裝載)load項中定義控制文件名和log文件。裝載過程中如果出現無法完成裝載的異常數據均會被保存在特定的文件中,如果數據裝載失敗就可以查閱文件并查找問題所在。
以上是對煤炭企業中ORACLE數據庫的主要應用操作進行探討。ORACLE數據庫數據庫是一個高性能的大型關系數據庫,所以用來支持ORACLE數據庫正常運行的后臺系統規模也比較龐大。ORACLE數據庫設計和編碼完成之后投入使用就很難進行重新設計和編碼,所以ORACLE數據庫在使用之前需要明確掌握數據庫的應用,進行準確定位。
[1]崔燕.Oracle數據庫的應用[J].中外企業家,2015(15):176-176.
[2]李璐璐.Oracle數據庫優化方法分析[J].硅谷,2014(24):31-32.
[3]初宗榮.Oracle數據庫應用中存在的問題及優化策略[J].網絡安全技術與應用,2014(3):11-12.
[4]郭宇.大數據時代下Oracle數據庫在汽車制造業MIS系統中的應用[J].計算機光盤軟件與應用,2015(1):169-170.
[5]郭鳳清.探討oracle數據庫日常維護與優化[J].科技風,2014(24):120-120.
[6]張增陽.關于Oracle數據庫基礎設計與優化設計的研究[J].信息系統工程,2013(1):41,54.
[7]涂云杰.Oracle數據庫技術在煤礦安全監控中的應用[J].煤炭技術,2013(5):71-73.
[8]Oracle數據庫在煤炭企業中的應用[J].信息技術,2001(5).