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 | 從一個或多個表中檢索某些記錄。 |