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)中運行。
歷史
2000 -- D. Richard Hipp 設計 SQLite 是為了不需要管理即可操作程序。
2000 -- 在八月,SQLite1.0 發布 GNU 數據庫管理器(GNU Database Manager)。
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 | 從一個或多個表中檢索某些記錄。 |