SQLite
+ -

SQLite 简介

2019-09-09 12 0
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_协议错误。
字节流是站长多年来的工作经验和技术总结,和站长一起学习,每天都有进步。
通俗易懂,深入浅出。
文章不深奥,不需要钻研,不烧脑细胞,人人都可以学习,在公交、在地铁、在厕所都可以阅读,随时随地涨姿势。

0 篇笔记 写笔记

SQLite 简介
SQLite是一个轻型的数据库,无需任何服务,无需任何配置的绿色数据库。SQLite是一个进程内库,它实现了一个自包含、无服务器、零配置、事务性SQL数据库引擎。SQLite的代码在公共域中,因此可以免费用于任何目的,无论是商业还是私有。SQLite是世界上部署最广泛的数据库,其应用程序比我们所能统......
SQLite 数据插入insert into
和常用数据库一致,SQLite也提供insert SQL语句用于向数据库的表中添加新的数据记录。语法INSERT INTO table_name [(col_name1,col_name2,...col_nameN)]values (value1,value2,...,value2),.........
SQLite 条件语句where
一般的SQL语句如不加限制条件,默认是结全表进行操作,这显然不是我们想要的。我们需要的是对满足某个条件的数据记录进行操作。而这个条件就是通过where语句来实现的。SQLite条件语句where用于过滤相关的sql操作结果。用于select语句查询结果的过滤用于update语句更新数据的过滤用于de......
SQLite 绑定用法
Sqlite和大多数的关系数据库一样,也支持 Sql语句的绑定(bind).SQL语句使用绑定技术,可以减少Sql语句在执行过程中的动态解析次数,从而可以提高执行效率真。Sqlite使用sqlite3_prepare函数来准备一个需要被绑定的sql语句,sql语句的中?代表绑定占位符,该规则在很多关......
SQLite 查询语句select
select用于数据库库记录,其查询结果以表的形式展示合用户。语法select语句在查询时需指定需要是查询的表名,查询的列名(如果需要查询所有列,可以用*来代替)和查询条件。查询条件是可根据实际需要指定,如不指定,则默认情况是查询所有数据。查询指定的列,各个列之间通过,分隔开SELECT c......
SQLite 删除语句delete
有插入必有删除,SQLite使用delete语句删除表中已经存在的记录。和update语句一样,delete语句在删除记录时也需要添加where条件语句过滤,否则会将表中所有的记录会删除掉。语法DELETE FROM table_name带where条件的语法:条件筛选可以使用and,or等表达式进......
SQLite 排序语句Order By
SQLite提供order by语句对select语句查询出来的记录按列进行排序。按排排序有两种方式,可多列组合排序:升序 asc(默认)降序 descOrder by语句语法SELECT column-list FROM table_name [WHERE condition] [ORDER BY......
SQLite VS2013工程配置
上SQLite 官网下载Sqllite源代码包:https://www.sqlite.org/download.html , 如本文下载的是Sqlite3的混合包:sqlite-amalgamation-3250300.zip 。下载后解压打开vs2013,新建工程 ,先择Vistual C++k ......
SQLite 匹配语句Glob
SQLite提供的glob语句和sqlite通用函数Glob功能一致,用于数据记录的匹配查询。Glob语句和Like语句功能相同,惟一的区别是Glob区分大小写,而Like语句不区分大小写。Glob语句是一个布尔表达式语句,如果搜索表达式与模式表达式匹配,Glob 将返回真(true),也就是 1。......
SQLite 统计函数
在任何接受单个参数的聚合函数中,该参数前面都可以有关键字DISTINCT。在这种情况下,重复的元素在传递到聚合函数之前被过滤掉。例如,函数“count(distinct X)”将返回列X的不同值的数目,而不是列X中非空值的总数。avg(X)avg(X)函数的作用是返回组中所有非空X的平均值,不能进行......
SQLite 运算符
对SQLite数据库的表进行操作时,经常需要使用where语句进行条件过滤。而条件过滤的核心就是运算符。SQLite提供了大概四类的运算符:算术运算符:如常用的四则运算符:加、减、乘、除,模(余数计算)比较运算符:如大于,等于,小于,不等于。逻辑运算符:与、或、非。位运算符:位运算的与、或、非和一些......
SQLite 工具软件介绍
SQLite官方提供了一些工具,通过这些工具,我们可以操作SQLite数据库。这些工具包括:SQLite命令行交互平台Command-Line Shell ,在Windows下编译为sqlite3.exe.使用该工具,可以创建、修改和查询任意SQLite数据库文件。SQLite数据库分析软件(SQL......
SQLite 更新语句update
SQLite 的 UPDATE 查询用于修改表中已有的记录。UPDATE table_nameSET column1 = value1, column2 = value2...., columnN = valueN上面的这个UPDATE语句由于没有条件限制,默认会对该表中所有的数据记录进行修改,所以......
SQLite 条件过滤having
SQLite提供Having语句用于过滤Group By语句生成的分组。where语句用过滤select语句查询的列记录,所以Having语句是条件的条件。语法由于Having语句过滤的是group by语句生成的组,所以位于group by语句之后。下面是 HAVING 子句在 SELECT 查询......
SQLite Windows安装
SQLite的安装其实SQLite工具软件的安装,而这些工具内部其实是依赖于SQLite库的实现。对于开发者来,需要SQLite的动态库或者静态库,亦或者进行整个项目的源代码编程,可参考SQLite 官方资源包介绍来选择相关的库或者文件进行开发。本节将在Windows,Linux(Centos7)和......
取消
感谢您的支持,我会继续努力的!
扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

您的支持,是我们前进的动力!