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的模块，它不是到SQLite的接口，而是包括整个SQLite数据库引擎在其中并不需要任何额外的软件。
 Python自2.5之后内置pysqlitepysqlite，模块名为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 ManagerSQLite Manager（另一個同名的WebExtensions擴充套件）。
 SQLite Database Browser，一款连接SQLite数据库的图形客户端。
 SQLite Expert Personal，Windows上的一款连接SQLite数据库的免费客户端。
 Database .NETDatabase .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

 外部链接 

 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 - 視覺化資料庫管理工具，支援多種資料庫且免安裝。

Category:嵌入式資料庫
Category:開源資料庫管理系統
Category:C软件
Category:公有领域软件