鄭州輕工業(yè)學院 馬江濤 劉放美
SQLite在數(shù)據庫實驗教學中的應用探討*
鄭州輕工業(yè)學院 馬江濤 劉放美
SQLite的第一個Alpha版本誕生于2000年5月。SQLite是一款輕型數(shù)據庫,也是遵守ACID的關聯(lián)式數(shù)據庫管理系統(tǒng),它的設計目標是嵌入式系統(tǒng),而且目前已經在很多嵌入式產品中使用了,它占用的系統(tǒng)資源非常低,在嵌入式設備中,可能只需要幾百K的內存空間就夠了。它能夠支持Windows、Linux、Unix等主流操作系統(tǒng),同時能夠跟很多程序語言相結合,比如Tcl、PHP、Java等,還有ODBC接口,同樣比起Mysql、PostgreSQL這兩款開源世界著名的數(shù)據庫管理系統(tǒng),它的處理速度比他們都快。SQLite雖然很小巧,但是支持的SQL語句不會遜色于其他開源數(shù)據庫,它支持的SQL包括:ATTACHDATABASE,BEGINTRANSACTION,comment,COMMIT TRANSACTION,COPY,CREATE INDEX,CREATE TABLE,CREATE TRIGGER,CREATE VIEW,DELETE,DETACH DATABASE,DROP INDEX,DROP TABLE,DROP TRIGGER,DROP VIEW,END TRANSACTION,EXPLAIN,expression,INSERT,ON CONFLICT clause,PRAGMA,REPLACE,ROLLBACKTRANSACTION,SELECT,UPDATE。
同時,它還支持事務處理等功能。SQLite支持跨平臺,操作簡單,能夠使用很多語言直接創(chuàng)建數(shù)據庫,如果是個很小型的應用,或者想做嵌入式開發(fā),可以考慮使用SQLite。目前,它的最新版本是6.20,發(fā)布時間是2009年11月4日。它的官方網站是http://www.sqlite.org或http://www.sqlite.com.cn,能在上面獲得源代碼和文檔。同時,因為數(shù)據庫結構簡單,系統(tǒng)源代碼也不是很多,也適合想做研究數(shù)據庫系統(tǒng)開發(fā)的專業(yè)人士。
SQLite的特性。ACID事務零配置指無需安裝和管理配置,儲存在單一磁盤文件中的一個完整的數(shù)據庫,數(shù)據庫文件可以在不同字節(jié)順序的機器間自由的共享,比一些流行的數(shù)據庫在大部分普通數(shù)據庫操作要快和簡單,同時通過Wrapper支持其他語言的綁定,良好注釋的源代碼,有著90%以上的測試覆蓋率,并且沒有額外的依賴,Source完全Open使用,你可用于任何用途,且支持多種開發(fā)語言,如C、PHP、Perl、Java、ASP.NET和Python等語言。
1.支持絕大多數(shù)的SQL92標準的關系型數(shù)據庫,包括索引、限制、觸發(fā)和查看。通過數(shù)據庫的獨立性和共享鎖實現(xiàn)獨立事系處理。但不支持引用完整性的外鍵限制,其他不支持的方面在應用時通過參考文獻查看。
2.建立的每個數(shù)據庫分別存儲在一個獨立的不依賴其他文件的單一數(shù)據庫文件中。這符合嵌入式數(shù)據庫的文件數(shù)據庫要求,邊衡數(shù)據庫的發(fā)布。
3.官方網站上的源程序提供了C和TCL語言接口,可通過第三方的接口程序實現(xiàn)對其他語言的支持,如通過JDBC接口實現(xiàn)對Jova接口程序的支持。
4.數(shù)據庫最大可以達到2TB,最小可以僅幾百KB,甚至可以更小。
5.提供了對事務功能和并發(fā)處理的支持。
6.SQLite不同于Server數(shù)據庫。它和程序運行在同一進程中,運行過程中沒有其他進程的通信,所以速度快、體積小、易于分發(fā),適合在單機環(huán)境中運行。
一般而言,計算機軟件實驗的基本作用是對特定軟件系統(tǒng)的設計和實現(xiàn)原則進行示范。實驗的輔助作用還有:對課堂教學中的結論進行驗證,對課堂教學中的方法進行運用,補充課堂教學的不足。
傳統(tǒng)的數(shù)據庫原理實驗課程理想的支撐環(huán)境是:局域網(如Novell NetWare、Microsoft Windows NT Advanced Server等);支持ANSI/ISO SQL2及SQL1999(SQL3)標準的SQL RDBMS(如Oracle、IBM UDB DB2、InformixDynamicServer、Microsoft SQL Server 2000、Sybase Adaptive Server Enterprise、MySQL較新的版本等),并配置必要SQL交互接口;嵌入式SQL及預編譯器;ER/UML CASE工具和前端工具;等。若以上標準配置不能滿足需求,另有替代配置:提供SQL交互接口的RDBMS(如Microsoft Access、Visual FoxPro等)。
進入系統(tǒng)開始菜單后,運行cmd命令,進入C:Documents and SettingsAdministrator,進入到E盤paper的sqlite子目錄下,數(shù)據庫管理系統(tǒng)sqlite3.exe以及數(shù)據庫first.db在此目錄下。在命令行輸入sqlite3.exe和first.db(它們之間必須有空格)就進入sqlite數(shù)據庫管理系統(tǒng),會看到如下顯示:
E:papersqlite>sqlite3.exe first.db
SQLite version 3.6.10
Enter“.help”for instructions
Enter SQL statements terminated with a“;”
此版本是sqlite的3.6.10,我們可以用.help來查看幫助信息。如果是關于sqlite的內部命令則都是以開始命令開始,如果輸入的是SQL語句命令必須以結束命令結束。
SQLite是無類型的??梢员4嫒魏晤愋偷臄?shù)據到所想要保存的任何表的任何列中,無論這列聲明的數(shù)據類型是什么。對于SQLite來說對字段不指定類型是完全有效的,字段類型為主鍵時除外。如Create Table ex1(a,b,c),SQLite允許忽略數(shù)據類型,但是仍然建議在你的Create Table語句中指定數(shù)據類型。因為數(shù)據類型對于你和其他的程序員交流,或者你準備換掉你的數(shù)據庫引擎。SQLite支持常見的數(shù)據類型,如CREATE TABLE ex2(aVARCHAR(10)、bNVARCHAR(15)、cTEXT、d INTEGER、eFLOAT、fBOOLEAN、gCLOB、hBLOB、i TIMESTAMP,j NUMERIC(10,5),k VARYING CHARACTER(24),l NATIONAL VARYING CHARACTER(16))。我們可以使用SQLite的管理工具,如sqlitemanager來更好的使用SQLite數(shù)據庫。
SQLite作為一個開源的嵌入式數(shù)據庫產品,具有系統(tǒng)體積小、檢索效率高的特性,對于嵌入式場合和工業(yè)控制過程中的數(shù)據存儲,實現(xiàn)管理、執(zhí)行、維護的簡單化。在Windows應用程序的開發(fā)中,由于SQLite零配置的特性,生成的Windows應用程序不需要進行數(shù)據庫各程操作,同時具有廣闊的應用范圍,目前已廣泛應用于中小型網站的后臺數(shù)據庫和內存數(shù)據庫中。
和傳統(tǒng)的數(shù)據庫原理實驗相比,SQLite入門比較簡單,學生操作起來所見即所得,學生可以根據自己的應用需求來設計相應的數(shù)據庫管理系統(tǒng),且占用系統(tǒng)資源小,學生可以把數(shù)據庫發(fā)在郵箱里面,可以實現(xiàn)隨時隨地都能設計使用數(shù)據庫的效果。但是在實驗中應該注意,某些學生對基于命令行的語句輸入不太熟悉,需要加強DOS命令的練習。另外,SQLite源代碼開放,學生在學習的同時,還可以進行深入地研究,自行開發(fā)適合某種特定需求的數(shù)據庫管理系統(tǒng)。
河南省科技攻關項目“嵌入式數(shù)據庫系統(tǒng)”(0424220008)。