SQLite - 概述

本章帮助您了解什么是 SQLite,它与 SQL 有何不同,为什么需要它以及它处理应用程序数据库的方式。

SQLite 是一个实现自包含、无服务器、零配置、事务性 SQL 数据库引擎的软件库。 SQLite 是周围增长最快的数据库引擎之一,但这是在流行度方面的增长,与其规模无关。 SQLite 的源代码在公共领域。


什么是 SQLite?

SQLite 是一个进程内库,它实现了一个自包含、无服务器、零配置、事务性 SQL 数据库引擎。 它是一个零配置的数据库,这意味着与其他数据库一样,您不需要在系统中对其进行配置。

SQLite 引擎不像其他数据库那样是一个独立的进程,您可以根据您的应用程序的要求将其静态或动态链接。 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)。


SQLite 简史

  • 2000 - D. Richard Hipp 设计 SQLite 的目的是为了不需要管理程序来运行程序。

  • 2000 - 8 月,SQLite 1.0 与 GNU Database Manager 一起发布。

  • 2011 - Hipp宣布将UNQl接口添加到SQLite DB并开发UNQLite(面向文档的数据库)。


SQLite 限制

SQLite 中很少有 SQL92 不支持的特性如下表所示。

序号 功能 & 说明
1

RIGHT OUTER JOIN

仅实现了 RIGHT OUTER JOIN。

2

FULL OUTER JOIN

仅实现了 FULL OUTER JOIN。

3

ALTER TABLE

支持 ALTER TABLE 命令的 RENAME TABLE 和 ADD COLUMN 变体。 不支持 DROP COLUMN、ALTER COLUMN、ADD CONSTRAINT。

4

Trigger support

支持 FOR EACH ROW 触发器,但不支持 FOR EACH STATEMENT 触发器。

5

VIEWs

SQLite 中的视图是只读的。 您不能对视图执行 DELETE、INSERT 或 UPDATE 语句。

6

GRANT and REVOKE

唯一可以应用的访问权限是底层操作系统的正常文件访问权限。


SQLite 命令

与关系数据库交互的标准 SQLite 命令类似于 SQL。 它们是 CREATE、SELECT、INSERT、UPDATE、DELETE 和 DROP。 这些命令可以根据其操作性质进行分组 −


DDL - 数据定义语言

序号 命令 & 说明
1

CREATE

在数据库中创建新表、表视图或其他对象。

2

ALTER

修改现有的数据库对象,例如表。

3

DROP

删除整个表、表的视图或数据库中的其他对象。


DML - 数据操作语言

序号 命令 & 说明
1

INSERT

创建记录

2

UPDATE

修改记录

3

DELETE

删除记录


DQL - 数据查询语言

序号 命令 & 说明
1

SELECT

从一个或多个表中检索某些记录