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