Latest web development tutorials

SQLite 簡介

本教程幫助您了解什麼是SQLite,它與SQL 之間的不同,為什麼需要它,以及它的應用程序數據庫處理方式。

SQLite是一個軟件庫,實現了自給自足的、無服務器的、零配置的、事務性的SQL 數據庫引擎。 SQLite是一個增長最快的數據庫引擎,這是在普及方面的增長,與它的尺寸大小無關。 SQLite 源代碼不受版權限制。

什麼是SQLite?

SQLite是一個進程內的庫,實現了自給自足的、無服務器的、零配置的、事務性的SQL 數據庫引擎。 它是一個零配置的數據庫,這意味著與其他數據庫一樣,您不需要在系統中配置。

就像其他數據庫,SQLite 引擎不是一個獨立的進程,可以按應用程序需求進行靜態或動態連接。 SQLite 直接訪問其存儲文件。

為什麼要用SQLite?

  • 不需要一個單獨的服務器進程或操作的系統(無服務器的)。

  • SQLite 不需要配置,這意味著不需要安裝或管理。

  • 一個完整的SQLite 數據庫是存儲在一個單一的跨平台的磁盤文件。

  • SQLite 是非常小的,是輕量級的,完全配置時小於400KiB,省略可選功能配置時小於250KiB。

  • SQLite 是自給自足的,這意味著不需要任何外部的依賴。

  • SQLite 事務是完全兼容ACID 的,允許從多個進程或線程安全訪問。

  • SQLite 支持SQL92(SQL2)標準的大多數查詢語言的功能。

  • SQLite 使用ANSI-C 編寫的,並提供了簡單和易於使用的API。

  • SQLite 可在UNIX(Linux, Mac OS-X, Android, iOS)和Windows(Win32, WinCE, WinRT)中運行。

歷史

  1. 2000 -- D. Richard Hipp 設計SQLite 是為了不需要管理即可操作程序。

  2. 2000 -- 在八月,SQLite1.0 發布GNU 數據庫管理器(GNU Database Manager)。

  3. 2011 -- Hipp 宣布,向SQLite DB 添加UNQl 接口,開發UNQLite(面向文檔的數據庫)。

SQLite 局限性

在SQLite 中,SQL92 不支持的特性如下所示:

特性描述
RIGHT OUTER JOIN只实现了 LEFT OUTER JOIN。
FULL OUTER JOIN只实现了 LEFT OUTER JOIN。
ALTER TABLE支持 RENAME TABLE 和 ALTER TABLE 的 ADD COLUMN variants 命令,不支持 DROP COLUMN、ALTER COLUMN、ADD CONSTRAINT。
Trigger 支持支持 FOR EACH ROW 触发器,但不支持 FOR EACH STATEMENT 触发器。
VIEWs在 SQLite 中,视图是只读的。您不可以在视图上执行 DELETE、INSERT 或 UPDATE 语句。
GRANT 和 REVOKE可以应用的唯一的访问权限是底层操作系统的正常文件访问权限。

SQLite 命令

與關係數據庫進行交互的標準SQLite 命令類似於SQL。 命令包括CREATE、SELECT、INSERT、UPDATE、DELETE 和DROP。 這些命令基於它們的操作性質可分為以下幾種:

DDL - 數據定義語言

命令描述
CREATE创建一个新的表,一个表的视图,或者数据库中的其他对象。
ALTER修改数据库中的某个已有的数据库对象,比如一个表。
DROP删除整个表,或者表的视图,或者数据库中的其他对象。

DML - 數據操作語言

命令描述
INSERT创建一条记录。
UPDATE修改记录。
DELETE删除记录。

DQL - 數據查詢語言

命令描述
SELECT从一个或多个表中检索某些记录。