Skip to content

LV005-SQLite简介 ​

一、SQLite 简介 ​

1. 数据和数据库 ​

数据(Data) 能够输入计算机并能被计算机程序识别和处理的信息集合。
数据库(Database) 数据库是在数据库管理系统管理和控制之下,存放在存储介质上的数据集合。

2. 基于嵌入式的数据库 ​

基于嵌入式 Linux 的数据库主要有 SQLite, Firebird, Berkeley DB, eXtremeDB:

SQLite 关系型数据库, 体积小, 支持 ACID 事务
Firebird 关系型数据库, 功能强大, 支持存储过程、SQL 兼容等
Berkeley DB 它里边并没有数据库服务器的概念,它的程序库直接链接到应用程序中
eXtremeDB 内存数据库, 运行效率高

3. 什么是 SQLite ​

SQLite 是一个进程内的库,实现了自给自足的、无服务器的、零配置的、事务性的 SQL 数据库引擎。它是一个零配置的数据库,这意味着与其他数据库不一样,我们不需要在系统中配置。并且 SQLite 可以直接访问其存储文件。

SQLite 的源代码是 C,其源代码完全开放。SQLite 第一个 Alpha 版本诞生于 2000 年 5 月,它是一个轻量级的嵌入式数据库。

Github 仓库:sqlite/sqlite: Official Git mirror of the SQLite source tree

3.1 Excel? ​

其实怎么说呢,它大概就像是 Windows 下的 Excel 一样,对于 Windows 下的 Excel,我们首先会创建一个工作簿,就像下图中左侧这样:

imgimg

创建完工作簿后,我们就进入了这个工作簿(如右图),在 Excel 中,会提前创建好一个默认的工作表。然后我们就可以开始输入表头,然后,每一行记录一条数据。

3.2 SQLite? ​

SQLite 呢?我没有用过可视化的工看过 SQLite,但是后续的操作让我觉得,它与上边介绍的 Excel 是很类似的。

(1)首先,我们需要创建一个数据库,这就类似于 Excel 中的工作簿。

(2)然后我们需要再创建数据表,创建数据表的时候是需要有一个数据表的表头的,就是每一列的数据大概是什么类型的数据,每一列的标识是怎样的。这其实就很像 Excel 中的工作表,只不过 Excel 会自动帮我们创建一张工作表,而 SQLite 不会,创建了数据库之后,它里边什么都没有,甚至于我们不创建数据表的情况下,这个数据库根本不会在硬盘上保存。

(3)接着就是向工作表添加数据,查询数据,删除数据,修改数据等等一系列的操作。

所以这样一想,其实跟我们平时使用的 Excel 是很类似的,后边会具体学习如何使用 SQLite 数据库。

4.SQLite 有哪些特点 ​

  • 不需要一个单独的服务器进程或操作的系统(无服务器的)。
  • 不需要配置,这意味着不需要安装或管理。
  • 一个完整的 SQLite 数据库是存储在一个单一的跨平台的磁盘文件。
  • 占用空间非常小的,是轻量级的,完全配置时小于 400KB,省略可选功能配置时小于 250KB,支持数据库大小至 2TB。
  • 数据库文件可以在不同字节顺序的机器间自由共享。
  • SQLite 是自给自足的,这意味着不需要任何外部的依赖。
  • SQLite 事务是完全兼容 ACID 的,允许从多个进程或线程安全访问。
  • SQLite 支持 SQL92(SQL2) 标准的大多数查询语言的功能。
  • SQLite 使用 ANSI-C 编写的,全部源码大致 3 万行 C 代码,并提供了简单和易于使用的 API。
  • SQLite 可在 UNIX(Linux, Mac OS-X, Android, iOS)和 Windows(Win32, WinCE, WinRT)中运行。

二、SQLite 安装与启动 ​

这里只说明在 Ubuntu 系统中 SQLite 的安装。其为了后续操作的顺畅,所以这里添加了三个 SQLite 最最基本的操作。

1. 在线安装 ​

首先查看系统中是否已经安装了 SQLite3,可以在命令行中输入以下命令:

shell
sqlite3

若未安装过,则会有以下提示:

shell
Command 'sqlite3' not found, but can be installed with:
sudo apt install sqlite3

然后我们输入以下命令,等待安装完成即可:

shell
sudo apt install sqlite3

然后我们重新输入以下命令:

shell
sqlite3

若安装成功,则会显示以下信息:

shell
SQLite version 3.34.1 2021-01-20 14:10:07
Enter ".help" for usage hints.
Connected to a transient in-memory database.
Use ".open FILENAME" to reopen on a persistent database.
sqlite>

sqlite> 表示此处可以开始输入数据库的命令啦。

2. 编译安装 ​

2.1 下载编译源码 ​

我们可以在官网找到可以编译安装的源码包:

shell
https://www.sqlite.org/download.html

打开这个网址后,我们会看到有很多的安装包,但是我们选择这个 sqlite-autoconf-xxx.tar.gz 的包下载就可以啦。然后解压:

shell
tar -xvf sqlite-autoconf-3380500.tar.gz

或者也可以直接通过 github 仓库拉取源码:

shell
git clone --depth=1 https://github.com/sqlite/sqlite.git

2.2 编译安装 ​

  • 配置
shell
cd sqlite-autoconf-3380500/
./configure --prefix=/usr/local
  • 编译安装
shell
make # 编译源码
sudo make install # 安装

注意加上 sudo,否则可能会有以下报错:

shell
make[1]: 进入目录“/home/hk/1Software/sqlite-autoconf-3380500”
 /usr/bin/mkdir -p '/usr/local/lib'
 /bin/bash ./libtool   --mode=install /usr/bin/install -c   libsqlite3.la '/usr/local/lib'
libtool: install: /usr/bin/install -c .libs/libsqlite3.so.0.8.6 /usr/local/lib/libsqlite3.so.0.8.6
/usr/bin/install: cannot create regular file '/usr/local/lib/libsqlite3.so.0.8.6': Permission denied
make[1]: *** [Makefile:419:install-libLTLIBRARIES] 错误 1
make[1]: 离开目录“/home/hk/1Software/sqlite-autoconf-3380500”
make: *** [Makefile:898:install-am] 错误 2
  • 检测是否安装完成
shell
sqlite3

若安装成功,则会显示以下信息:

sqlite
SQLite version 3.38.5 2022-05-06 15:25:27
Enter ".help" for usage hints.
Connected to a transient in-memory database.
Use ".open FILENAME" to reopen on a persistent database.
sqlite>

从这里可以看出,我们编译安装的版本比在线安装的要更新一些。

三、SQLite 基本操作 ​

1. 进入 SQLite ​

其实前边安装的时候都已经启动过了,就是我们直接在终端中输入以下命令:

shell
sqlite3

然后便会进入 SQLite 数据库命令提示符下:

sqlite
SQLite version 3.38.5 2022-05-06 15:25:27
Enter ".help" for usage hints.
Connected to a transient in-memory database.
Use ".open FILENAME" to reopen on a persistent database.
sqlite>

2. 创建 SQLite 数据库 ​

2.1 启动时创建 ​

后续的操作都需要首先有一个数据库才行,所以这里就先了解一下如何创建一个数据库吧,我们在终端中执行以下命令:

shell
sqlite3 DatabaseName.db

这样便会在 当前目录 下创建一个名为 DatabaseName.db 的数据库,创建的数据库就类似于我们在 Windows 下的 Execl 中创建了一个工作簿一样。我们现在只是有了数据库,却还没有创建数据表,这个数据表不会自动创建,需要我们后边使用相关的一些语句进行创建。需要注意的是当我们 没有创建数据表的时候,磁盘中不会有该数据库文件的存在。

2.2 .open 创建 ​

已经进入了 sqlite 命令行后,我们可以使用 .open 命令来创建数据库:

shell
sqlite> .open DatabaseName.db

上面的命令创建了数据库文件 DatabaseName.db,位于 sqlite3 命令同一目录下。打开已存在数据库也是用 .open 命令,以上命令如果 test.db 存在则直接会打开,不存在就创建它。

3. 退出 SQLite 命令 ​

进入 SQLite 进行一系列操作后,如何退出呢?我们可以在 SQLite 命令提示符后边输入以下命令:

sqlite
sqlite>.quit

这样便可以退出 SQLite 啦。