王麗英 魯 娟
[摘要]SQL是高級的非過程化編程語言,可以寫出非常復雜的語句。SQL數據庫編程技術在Foxpro中的應用是FoxPro推出的另一項具有革命性意義的關鍵技術。介紹SQL的定義以及SQL數據庫編程技術在Foxpro中的應用。
[關鍵詞]SQL語句 非過程化語言 存儲過程
中圖分類號:TP3文獻標識碼:A文章編號:1671-7597(2009)0220071-01
當今,數據庫聯網實現數據共享已經成為信息系統建設中一個迅速發展的潮流。利用SQL Server、Oracal、Sybase等客戶機/服務器(Client/Se
rver)體系結構的數據庫系統進行信息系統的開發、更新改造已成為當前一大趨勢。而Foxpro是我國近年應用較為廣泛的數據庫開發軟件,許多單位、部門多年來積累了大量的寶貴的數據資料,這些部門面臨進行計算機信息系統改造、更新問題,下面主要介紹如何在DBF數據表中運用SQL Server語言。
一、SQL的概念
SQL全稱是“結構化查詢語言(Structured Query Language)”是一種數據庫查詢和程序設計語言,用于存取數據以及查詢、更新和管理關系數據庫系統。最早的是IBM的圣約瑟研究實驗室為其關系數據庫管理系統SYSTEM R開發的一種查詢語言,它的前身是SQUARE語言。SQL語言結構簡潔,功能強大,簡單易學,所以自從IBM公司1981年推出以來,SQL語言,得到了廣泛的應用。如今無論是像Oracle,Sybase,Informix,SQL server這些大型的數據庫管理系統,還是像Visual Foxporo,PowerBuilder這些微機上常用的數據庫開發系統,都支持SQL語言作為查詢語言。
SQL是高級的非過程化編程語言,允許用戶在高層數據結構上工作,具有完全不同底層結構的不同數據庫系統可以使用相同的SQL語言作為數據輸入與管理的接口。它以記錄集合作為操作對象,所有SQL語句接受集合作為輸入,返回集合作為輸出,這種集合特性允許一條SQL語句的輸出作為另一條SQL語句的輸入,所以SQL語句可以嵌套,這使他具有極大的靈活性和強大的功能,可以寫出非常復雜的語句。
SQL語言包括兩種主要程式設計語言類別的陳述式:資料定義語言(DDL)與資料操作語言(DML)。DDL用于定義和管理物件,例如資料庫、資料表以及檢視表。DDL陳述式通常包括每個物件的CREATE、ALTER以及DROP命令。舉例來說,CREATE TABLE、ALTER TABLE以及DROP TABLE這些陳述式便可以用來建立新資料表、修改其屬性(如新增或刪除資料行)、刪除資料表等。DML利用INSERT、SELECT、UPDATE及DELETE 等陳述式來操作資料庫物件所包含的資料。
二、SQL的優點
SQL廣泛地被采用正說明了它的優點。它使全部用戶,包括應用程序員、DBA管理員和終端用戶受益匪淺。
(一)非過程化語言
SQL是一個非過程化的語言,因為它一次處理一個記錄,對數據提供自動導航。SQL允許用戶在高層的數據結構上工作,而不對單個記錄進行操作,可操作記錄集。所有SQL語句接受集合作為輸入,返回集合作為輸出。SQL的集合特性允許一條SQL語句的結果作為另一條SQL語句的輸入。SQL不要求用戶指定對數據的存放方法。這種特性使用戶更易集中精力于要得到的結果。所有SQL語句使用查詢優化器,它是RDBMS的一部分,由它決定對指定數據存取的最快速度的手段。查詢優化器知道存在什么索引,哪兒使用合適,而用戶從不需要知道表是否有索引,表有什么類型的索引。
(二)統一的語言
SQL可用于所有用戶的DB活動模型,包括系統管理員、數據庫管理員、應用程序員、決策支持系統人員及許多其它類型的終端用戶。基本的SQL命令只需很少時間就能學會,最高級的命令在幾天內便可掌握。SQL為許多任務提供了命令,包括:
1.查詢數據;
2.在表中插入、修改和刪除記錄;
3.建立、修改和刪除數據對象;
4.控制對數據和數據對象的存取;
5.保證數據庫一致性和完整性。
三、執行存儲過程
JDBC調用存儲過程,并使用存儲過程的返回值。這樣可以將處理工作分為服務端和客戶端兩部分,并大大加快系統的設計和開發的時間。比如可以重復使用服務器上的組件。使用存儲過程之后大量存儲計算工作可以交給數據庫服務器來處理,這將降低Web服務器的負載,從而提高整個系統的性能。
四、使用事務
1.事務中的操作是一個整體,要么都執行成功要么都不成功:事務開始后,如果所有的改變都正確,則使用commit方法將這些動作全部存入數據庫,否則就使用rollback取消所有的改變動作,而這時數據庫中的數據和執行事務前的是相同的。
2.使用事務時應當先用con.setAutoCommit(false),最后使用commit或者rollback。
3.rollback一般在catch段執行。
五、數據庫連接池
如果有一個數據庫連接請求并且連接中沒有連接,則生成一個新的連接。這個連接使用完之后并不關閉它,而是將它放入連接池。在這個過程中,還要判斷連接池中的連接是否超期。如果超期則將它關閉。
六、小結
綜上所述,SQL語言是強大的數據語言。SQL Fox的開發人員第一次用單一語句取代了整個程序過程,并且這種支持是內含于Fox數據引擎之中的,是一次具有革命意義的技術進步。
參考文獻:
[1]胡維華主編,《Visual FoxPro程序設計教程》,浙江科學技術出版社,杭州,2000.
[2]陳華生主編,《Visual FoxPro教程》,蘇州大學出版社.
[3]http://www.zk168.com.cn/INFO/Study/FreeThesis/In.29K 2006-6-29.
[4]http://www.dongkai.me/blog-it-related-articles/6-history-of-sql.html,SQL發展歷史.