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 版本诞生于 20005 月,它是一个轻量级的嵌入式数据库。

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 可在 UNIXLinux, Mac OS-X, Android, iOS)和 WindowsWin32, 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 啦。