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 | 从一个或多个表中检索某些记录。 |