SQLite(或)是遵守ACID的关系数据库管理系统,它包含在一个相对小的C程式庫中。与许多其它数据库管理系统不同,SQLite不是一个客户端/服务器结构的数据库引擎,而是被集成在用户程序中。
SQLite遵守ACID,实现了大多数SQL标准。它使用动态的、弱类型的SQL语法。它作为嵌入式数据库,是应用程序,如网页浏览器,在本地/客户端存储数据的常见选择。它可能是最广泛部署的数据库引擎,因为它正在被一些流行的浏览器、操作系统、嵌入式系统所使用。同时,它有许多程序设计语言的语言绑定。
SQLite是建立的公有领域项目。然而与这个目标最重要的偏差在于,除了主键以外,SQLite不强制进行类型检查。一个值的类型是动态的,不被schema所强制限制(虽然如此,但如果可以进行可恢复的类型转换时,schema会在存储数据时触发一个自动转换)。
特征
程式庫实现了多数的SQL-92标准,包括事务,以及实现、一致性、隔離性和持久性(即ACID),但它缺失了某些特性。例如,它仅部分支持触发器。尽管它支持大多数的复杂查询,但它的ALTER TABLE功能有所限制,不能修改或删除列,只能通过重新建立表的方式迂回进行。
SQLite不进行类型检查。你可以把字符串插入到整数列中。某些用户发现这是使数据库更加有用的创新,特别是与无类型的脚本语言一起使用的时候;然而其他用户认为这是主要的缺点。
多个进程或线程可以同時存取同一个数据而没有问题。可以同時平行讀取同一個資料庫。但同一時間只能有一個进程或线程進行資料寫入;否则會寫入失敗並得到一個錯誤訊息(或者會自動重試一段時間;自动重试的逻辑以及重試時間的長短是可以設定的)。
程式設計者還提供了一個叫做sqlite3的独立程序用来查询和管理SQLite数据库文件。SQLite的使用者可以把這個程式當作如何寫SQLite應用程式的範例。
语言绑定
目前有大量的编程语言提供使用SQLite的绑定,包括:
- C/C++
- C#與VB.Net以Mono實作,需要.NET Framework4.0以上版本,並支援Entity Framework
- Tcl
- 在CPAN的DBD::SQLite上有一个Perl的模块,它不是到SQLite的接口,而是包括整个SQLite数据库引擎在其中并不需要任何额外的软件。
- Python自2.5之后内置pysqlite,模块名为sqlite3(下載的package名為pysqlite3)。
- PHP从PHP 5.0开始已經包含SQLite,但是自5.1版之後,SQLite開始成為一個延伸函式庫。SQLite能与PHP4一起工作,但不包含在PHP4里面。
- Rails2.0.3将缺省的数据库配置改为了SQLite 3。
- Haskell
- Java
- Delphi: DISQLite3作为Delphi的一个第三方控件,不是SQLite的API,也不是接口,而是把SQLite数据库引擎重新封装编译到Delphi的目标程序中。
SQLite管理客户端
SQLite亦可以作為桌面資料庫使用,以下為第三方SQLite的GUI軟體。例如,
- Navicat for SQLite是一套專為SQLite設計的強大資料庫管理及開發工具。它可以用於任何版本2或3的SQLite資料庫,並支援大部份SQLite的功能,包括觸發器、索引、檢視等。
- SQLiteMan,使用Qt开发的一个SQLite客户端,支持多语言、跨平台。
- SQLite Database Browser,一款连接SQLite数据库的图形客户端。
- SQLite Expert Personal,Windows上的一款连接SQLite数据库的免费客户端。
- Database .NET,一套適用於Windows平台的免安裝綠色軟體,支援多種視覺化資料庫管理工具,除了SQLite之外也支援Microsoft SQL Server、SQL Azure、MySQL、Oracle、IBM DB2、Informix、PostgreSQL、HP Vertica、NuoDB、Teradata、Sybase ASE、Firebird、Access、Excel、DBase、SQLCe等資料庫軟體。
参考文献
參閱
- 关系数据库
** 关系型数据库管理系统对比
- MySQL
外部链接
- [https://www.sqlite.org/ SQLite主页]
- [http://www.pysqlite.org/ pysqlite]
- [https://web.archive.org/web/20171111002929/http://search.cpan.org/search%3fmodule=DBD::SQLite DBD::SQLite] - CPAN上的Perl模块。
- [https://web.archive.org/web/20050901193850/http://rubyforge.org/projects/sqlite-ruby/ Sqlite-ruby] - Ruby语言接口。
- [https://sqlitebrowser.org/ SQLiteManager] - 管理SQLite数据库的多语言的PHP4写的web工具。
- [http://www.sqlitedeveloper.com/ SQLite Developer] - SQLite可视化数据库管理器。
- [http://sqlitebrowser.sourceforge.net/ SQLiteBrowser] - 視窗介面SQLite資料庫瀏覽器
- [https://web.archive.org/web/20140626165719/http://www.ch-werner.de/sqliteodbc/ SQLite ODBC驱动程序]
- [http://sqliteadmin.orbmu2k.de/ SQLite Administrator]
- [https://web.archive.org/web/20060408172958/http://sqlite.phxsoftware.com/ SQLite.NET 2.0] - An ADO.NET 2.0 provider for SQLite
- [https://web.archive.org/web/20110928073029/http://documentation.openoffice.org/HOW_TO/data_source/SQLite.pdf Using SQLite Database with OpenOffice.org](via ODBC or *[http://dba.openoffice.org/drivers/sqlite/index.html sqlite-sdbc-driver])
- [https://web.archive.org/web/20061001143646/http://www.linuxformat.co.uk/modules.php?op=modload&name=Sections&file=index&req=viewarticle&artid=19 Interview with Richard Hipp]
- [https://web.archive.org/web/20150202002316/http://talkera.org/python/python-database-programming-sqlite-tutorial/ SQLite with Python tutorial]
- [https://fishcodelib.com/Database.htm Database.NET] - 視覺化資料庫管理工具,支援多種資料庫且免安裝。
评论 (0)