SQLite 简介

SQLite教程以最新的SQLite版本version 3.33.0(2020-08-20)为基础,带你学习和了解最新的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_协议错误。
字节流是站长多年来的工作经验和技术总结,和站长一起学习,每天都有进步。
通俗易懂,深入浅出。
文章不深奥,不需要钻研,不烧脑细胞,人人都可以学习,在公交、在地铁、在厕所都可以阅读,随时随地涨姿势。