郑州轻工业学院 马江涛 刘放美
SQLite在数据库实验教学中的应用探讨*
郑州轻工业学院 马江涛 刘放美
SQLite的第一个Alpha版本诞生于2000年5月。SQLite是一款轻型数据库,也是遵守ACID的关联式数据库管理系统,它的设计目标是嵌入式系统,而且目前已经在很多嵌入式产品中使用了,它占用的系统资源非常低,在嵌入式设备中,可能只需要几百K的内存空间就够了。它能够支持Windows、Linux、Unix等主流操作系统,同时能够跟很多程序语言相结合,比如Tcl、PHP、Java等,还有ODBC接口,同样比起Mysql、PostgreSQL这两款开源世界著名的数据库管理系统,它的处理速度比他们都快。SQLite虽然很小巧,但是支持的SQL语句不会逊色于其他开源数据库,它支持的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支持跨平台,操作简单,能够使用很多语言直接创建数据库,如果是个很小型的应用,或者想做嵌入式开发,可以考虑使用SQLite。目前,它的最新版本是6.20,发布时间是2009年11月4日。它的官方网站是http://www.sqlite.org或http://www.sqlite.com.cn,能在上面获得源代码和文档。同时,因为数据库结构简单,系统源代码也不是很多,也适合想做研究数据库系统开发的专业人士。
SQLite的特性。ACID事务零配置指无需安装和管理配置,储存在单一磁盘文件中的一个完整的数据库,数据库文件可以在不同字节顺序的机器间自由的共享,比一些流行的数据库在大部分普通数据库操作要快和简单,同时通过Wrapper支持其他语言的绑定,良好注释的源代码,有着90%以上的测试覆盖率,并且没有额外的依赖,Source完全Open使用,你可用于任何用途,且支持多种开发语言,如C、PHP、Perl、Java、ASP.NET和Python等语言。
1.支持绝大多数的SQL92标准的关系型数据库,包括索引、限制、触发和查看。通过数据库的独立性和共享锁实现独立事系处理。但不支持引用完整性的外键限制,其他不支持的方面在应用时通过参考文献查看。
2.建立的每个数据库分别存储在一个独立的不依赖其他文件的单一数据库文件中。这符合嵌入式数据库的文件数据库要求,边衡数据库的发布。
3.官方网站上的源程序提供了C和TCL语言接口,可通过第三方的接口程序实现对其他语言的支持,如通过JDBC接口实现对Jova接口程序的支持。
4.数据库最大可以达到2TB,最小可以仅几百KB,甚至可以更小。
5.提供了对事务功能和并发处理的支持。
6.SQLite不同于Server数据库。它和程序运行在同一进程中,运行过程中没有其他进程的通信,所以速度快、体积小、易于分发,适合在单机环境中运行。
一般而言,计算机软件实验的基本作用是对特定软件系统的设计和实现原则进行示范。实验的辅助作用还有:对课堂教学中的结论进行验证,对课堂教学中的方法进行运用,补充课堂教学的不足。
传统的数据库原理实验课程理想的支撑环境是:局域网(如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等)。
进入系统开始菜单后,运行cmd命令,进入C:Documents and SettingsAdministrator,进入到E盘paper的sqlite子目录下,数据库管理系统sqlite3.exe以及数据库first.db在此目录下。在命令行输入sqlite3.exe和first.db(它们之间必须有空格)就进入sqlite数据库管理系统,会看到如下显示:
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是无类型的。可以保存任何类型的数据到所想要保存的任何表的任何列中,无论这列声明的数据类型是什么。对于SQLite来说对字段不指定类型是完全有效的,字段类型为主键时除外。如Create Table ex1(a,b,c),SQLite允许忽略数据类型,但是仍然建议在你的Create Table语句中指定数据类型。因为数据类型对于你和其他的程序员交流,或者你准备换掉你的数据库引擎。SQLite支持常见的数据类型,如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数据库。
SQLite作为一个开源的嵌入式数据库产品,具有系统体积小、检索效率高的特性,对于嵌入式场合和工业控制过程中的数据存储,实现管理、执行、维护的简单化。在Windows应用程序的开发中,由于SQLite零配置的特性,生成的Windows应用程序不需要进行数据库各程操作,同时具有广阔的应用范围,目前已广泛应用于中小型网站的后台数据库和内存数据库中。
和传统的数据库原理实验相比,SQLite入门比较简单,学生操作起来所见即所得,学生可以根据自己的应用需求来设计相应的数据库管理系统,且占用系统资源小,学生可以把数据库发在邮箱里面,可以实现随时随地都能设计使用数据库的效果。但是在实验中应该注意,某些学生对基于命令行的语句输入不太熟悉,需要加强DOS命令的练习。另外,SQLite源代码开放,学生在学习的同时,还可以进行深入地研究,自行开发适合某种特定需求的数据库管理系统。
河南省科技攻关项目“嵌入式数据库系统”(0424220008)。