SQLite

SQLite（或）是遵守ACID的关系数据库管理系统，它包含在一个相对小的C程式庫中。与许多其它数据库管理系统不同，SQLite不是一个客户端/服务器结构的数据库引擎，而是被集成在用户程序中。

SQLite遵守ACID，实现了大多数SQL标准。它使用动态的、弱类型的SQL语法。它作为嵌入式数据库，是应用程序，如网页浏览器，在本地/客户端存储数据的常见选择。它可能是最广泛部署的数据库引擎，因为它正在被一些流行的浏览器、操作系统、嵌入式系统所使用。同时，它有许多程序设计语言的语言绑定。

SQLite是建立的公有领域项目。

设计 
不像常见的客户端/服务器结构数据库管理系统，SQLite引擎不是一个应用程序与之通信的独立进程。SQLite库链接到程序中，并成为它的一个组成部分。这个库也可被动态链接。应用程序经由编程语言内的直接API调用来使用SQlite的功能，这在减少数据库访问延迟上有积极作用，因为在一个单一进程中的函数调用比跨进程通信更有效率。SQLite将整个数据库，包括定义、表、索引以及数据本身，作为一个单独的、可跨平台使用的文件存储在主机中。它采用了在写入数据时将整个数据库文件加锁的简单设计。尽管写操作只能串行进行，但SQLite的读操作可以多任务同时进行。

SQLite将PostgreSQL作为参考平台。项目将“PostgreSQL可能做些什么”作为SQL标准实现的开发参考。然而与这个目标最重要的偏差在于，除了主键以外，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的DBI/DBD模块，它不是到SQLite的接口，而是包括整个SQLite数据库引擎在其中并不需要任何额外的软件。
 Python自2.5之后将pysqlite内置，模块名为sqlite3(import 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客户端，支持多语言、跨平台。
 Firefox，可以藉由安裝擴充套件成為SQLite客户端管理工具，包括SQLite Manager、SQLite Reader、SQLite Manager（另一個同名的WebExtensions擴充套件）。
 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... 等資料庫軟體。

参考文献

參閱 
 关系数据库
 关系型数据库管理系统对比

外部链接 

 SQLite主页
 pysqlite
 DBD::SQLite - CPAN上的Perl模块。
 Sqlite-ruby - Ruby语言接口。
 SQLiteManager - 管理SQLite数据库的多语言的PHP4写的web工具。
 SQLite Developer - SQLite可视化数据库管理器。
 SQLiteBrowser - 視窗介面SQLite資料庫瀏覽器
 SQLite ODBC驱动程序
 SQLite Administrator
 SQLite.NET 2.0 - An ADO.NET 2.0 provider for SQLite
 Using SQLite Database with OpenOffice.org（via ODBC or *sqlite-sdbc-driver）
 Interview with Richard Hipp
 SQLite with Python tutorial
 Database.NET - 視覺化資料庫管理工具，支援多種資料庫且免安裝。

開源資料庫管理系統
C软件
公有领域软件