SQLite3应用准备

SQLite数据库是什么?官方介绍:SQLite是一个用C语言编写的库,实现了一个小巧、快速、自包含、高可靠性、功能齐全的SQL数据库引擎。

简单来说,SQLite数据库是一款开源的轻量级关系型数据,并集成到Android、iOS、macOS、PHP、Python等系统和软件环境中。不像SQL Server、MySQL等关系型数据库管理系统需要通过网络服务进行操作,SQLite数据库不需要使用网络服务器,其数据库基于文件,即,一个数据文件就是是一个数据库。

作为数据库,SQLite也有一些限制,如高频次的事务处理会导致整体性能明显下降,特别是在多用户并发操作和数据写入操作时。此外,SQLite数据库安全依赖于文件系统,文件破坏则数据受损。

综合来说,SQLite数据库主要应用在以下一些场景:

  • 移动应用中处理数据。如Android、iOS等移动设备中管理应用数据。
  • 计算机单机软件中提供本地数据库支持。
  • 软件开发过程中,使用SQLite作为测试数据库,简化开发和测试工作。
  • 作为本地数据处理工具,比如,作为Excel的扩展和补充。随着数据量的增加,Excel处理数据的性能会逐渐下降,此时,使用SQLite可以有效地提升单机处理数据的性能;再配合编程和其它工具软件,可以很方便地在Excel、SQLite数据库和以及其它环境之间处理和交换数据。
  • SQLite是关系型数据库,可以使用标准的SQL(Structured Query Language)语句进行数据定义、管理、查询等操作,对于学习关系型数据和SQL应用也是很好的实践工具。

此外,SQLite3是SQLite数据库的重要版本,名称中直接使用了主版本号3。

使用DB Browser for SQLite

DB Browser for SQLite(以下简称SQLite Browser)一款图形化界面的SQLite数据库操作软件,可从https://sqlitebrowser.org/dl/下载最新的版本。一般来说,直接下载压缩包文件,解压后即可使用。本合集测试环境为Windows操作系统,在解压的目录中点击“DB Browser for SQLite.exe”打开软件,主界面如下图所示。

DB Browser for SQLite主界面

二维表

关系型数据库的主要特点是:数据由二维表及其关系构成。二维表的概念比较简单,打开Excel、WPS表格等电子表格处理软件时,工作表呈现的结构就是典型的二维表形式。如下图显示的就二维表数据结构。

二维表数据结构

二维表中,每一列(也称为字段)保存一个数据项,如姓名、性别、年龄等。二维表中的每一行称为一条数据记录,其中的每个数据项会分别对应列的设置,如数据类型等属性。上图中,第一行显示为字段名,数据记录从第二行开始,这是Excel等电子表格中的数据显示方式,而在关系型数据库中,字段会使用独立的定义。

此外,Excel工作表中,单元格的格式可以分别设置,而在关系型数据库中,表中的数据类型必须按列设置,即一列数据的类型和各种约束设置是相同的。

SQLite3支持的数据类型

SQLite3数据库中支持的基本数据类型包括:

  • null,空值,表示没有数据。直接使用null关键字表示。
  • integer,整数。如1、10、-123、+123。
  • real,实数,可以处理浮点数(float),如1.23。数值也可以使用科学计数法。
  • text,文本,即字符串类型。使用一对单引号定义文本内容,如'abc123'、'中文测试'。
  • blob,以文本形式存储对象的字节数据(十六进制数),使用X或x为前缀的文本内容,如X'1F2B'、x'3C4D'。

操作关系型数据库时,SQL语句是不区分大小写的,但在各种文档、教程的示例代码中,关键字、保留字等一般会使用大写形式,如NULL、INTEGER等;本集合中,SQL语句中的关键字、函数名、运算符、对象名等会统一使用小写形式。

与CSV和Excel数据交换

需要将Excel导入到SQLite3数据库时,可以通过CSV作为中介。首先,在Excel中,将工作表数据另存为CSV格式,然后在SQLite Browser中导入CSV数据。测试数据可以从http://caohuayu.com/res/Res.aspx?id=res20251201下载,解压后,接下来将“测试数据2.csv”文件的数据导入SQLite数据库。

SQLite Browser中,选择“新建数据库”,在对话框中选择D:盘,并输入数据库文件为cdb_test.db,最后点击“保存”按钮,如下图所示。

创建新的SQLite数据库

创建新的数据库后会弹出新建数据表的窗口,暂时不需要,可以点击右下角的“Cancel”按钮关闭。接下来,通过菜单“文件”>>“导入”>>“从CSV文件导入表”。在显示的导入窗口中,修改表名为t2,选中“列名在首行”,“引号”列表中选择空白,高级设置中选中“禁用类型检测”,其它设置可根据实际情况设置;最后,点击右下角“OK”按钮导入数据,如下图所示。

导入CSV文件

执行导入操作后,可以看到创建表的SQL语句,如下所示。

SQLite
CREATE TABLE "t2" (
	"f1"	,
	"f2"	,
	"f3"	,
	"f4"	,
	"f4a"	,
	"f4b"	,
	"f5"	,
	"f5a"	,
	"f6"	
)

可以看到,create table语句中只使用了表名和字段,并没有设置字段的数据类型等属性。

保存对数据库的修改时可以点击SQLite Browser工具栏中的“写入更改”按钮;关闭数据库文件则点击工具栏中的“关闭数据库”按钮。

将SQLite3数据转换为Excel数据时,同样可以通过CSV作为中介,首先在SQLite Browser中导出CSV数据;通过菜单“文件”>>“导出”>>“导出表到CSV文件”打开导出设置窗口。如下图所示,选中需要导出的数据表,选中“第一行列名”,“引号”列表中选择空白,然后点击右下角“Save”按钮。

导出表到CSV文件

点击“Save”按钮后会弹出“另存为”窗口,选择CSV文件的保存位置,并点击“保存”。获取CSV文件后,可以CSV导入Excel进行操作,导入方法可以参考文章《导入CSV数据、提取和转置》,网址:http://caohuayu.com/article/Article.aspx?id=a251012。

实际工作中,如果能够使用Python等编程技术,可以更加方便地转换SQLite数据和Excel数据,在后续的文章中会讨论相关应用,也可以参考《Excel+Python轻松掌握数据分析》一书。接下来,本合集主要讨论SQLite3数据库的应用。