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