SQLite 简介
加入字节流官方QQ群:952873936或联系站长进行技术交流。
SQLite是一个轻型的数据库,无需任何服务,无需任何配置的绿色数据库。
SQLite是一个进程内库,它实现了一个自包含、无服务器、零配置、事务性SQL数据库引擎。SQLite的代码在公共域中,因此可以免费用于任何目的,无论是商业还是私有。
SQLite是世界上部署最广泛的数据库,其应用程序比我们所能统计的还要多,其中包括几个引人注目的项目,如Chrome浏览器使用Sqlite存储一些需要持久化的数据。
SQLite是一个嵌入式SQL数据库引擎。与大多数其他SQL数据库不同,SQLite没有单独的服务器进程。SQLite直接读写普通磁盘文件。包含多个表、索引、触发器和视图的完整SQL数据库包含在单个磁盘文件中。数据库文件格式是跨平台的.您可以在32位和64位系统之间或在big-endian和little-endian体系结构之间自由复制数据库。这些特性使SQLite成为应用程序文件格式的流行选择。SQLite数据库文件是美国国会图书馆推荐的存储格式。
SQLite是一种使用文件的数据管理方式,却提供了标准数据库提供的一些功能。所以说我们不要把SQLite看作是Oracle等其它数据库的替代品,而是fopen()的替代品,但其却实现了标准数据库的功能。所以我们可以像使用fopen一样使用数据库。
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 局限性
当然,由于SQLite是一个轻型的数据库,所以无法像标准专业的数据库像Oracle,SqlServer,Mysql等一样支持丰富且多样的SQL语句格式,但常用的select,update,delete等语句格式是支持的,且支持少数的Sql关联查询。
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 | 可以应用的唯一的访问权限是底层操作系统的正常文件访问权限。 |
SQL92是数据库的一个ANSI/ISO标准.它定义了一种语言(SQL)以及数据库的行为(事务、隔离级别等)。许多商业数据库至少在某种程度上是符合SQL92的。不过,这对于查询和应用的可移植性没有多大的意义。这个标准的前身是SQL92 ANSI/ISO标准,而SQL92之前还有一个SQL89 ANSI/ISO标准。
SQLite历史
SQLite项目开始于2002年5月9日,并且按照开发者意愿,使其支持到2050年。
完整的SQLite历史版本详见:https://www.sqlite.org/changes.html
SQLite最新特性
SQlite当前最新的版本为3.33.0(2020-08-14),主要更新如下:
- 支持遵循PostgreSQL语法进行更新。
- 将数据库文件的最大大小增加到281 TB。
- 扩展了PRAGMA integrity_check语句,以便可以选择将其限制为仅验证单个表及其索引,而不是验证整个数据库文件。
- 添加了用于执行任意精度十进制算术的十进制扩展。
- ieee754扩展的增强功能,用于处理ieee754二进制64号。
CLI增强功能:
- 添加了四种新的输出模式:“box”、“json”、“markdown”和“table”。
- “column”输出模式会自动展开列以包含最长的输出行,如果之前未设置“.header”,则会自动打开。
- “quote”输出模式支持“.separator”
- 十进制扩展名和ieee754扩展名是CLI的内置扩展名
Query planner改进:
- 添加了为使用索引的查询查找完整索引扫描查询计划的功能,根据该计划,以前将失败,并出现“无查询解决方案”。
- 更好地检测丢失的、不完整的和/或不可靠的sqlite_stat1数据,并生成良好的查询计划,尽管存在错误信息。
- 改进了查询的性能,例如“SELECT min(x)FROM t WHERE y y IN(?)?,?,?)” 假设指数在t(x,y)上。
- 在WAL模式下,如果writer崩溃并使shm文件处于不一致状态,那么即使存在活动的读事务,后续事务现在也能够恢复shm文件。在此增强之前,shm文件恢复该场景将导致SQLITE_协议错误。
通俗易懂,深入浅出。
文章不深奥,不需要钻研,不烧脑细胞,人人都可以学习,在公交、在地铁、在厕所都可以阅读,随时随地涨姿势。