LV07-01-SQLite-基础知识

本文主要是SQLite基础知识相关笔记,若笔记中有错误或者不合适的地方,欢迎批评指正😃。

点击查看使用工具及版本
Windows windows11
Ubuntu Ubuntu16.04的64位版本
VMware® Workstation 16 Pro 16.2.3 build-19376536
SecureCRT Version 8.7.2 (x64 build 2214) - 正式版-2020年5月14日
开发板 正点原子 i.MX6ULL Linux阿尔法开发板
uboot NXP官方提供的uboot,NXP提供的版本为uboot-imx-rel_imx_4.1.15_2.1.0_ga(使用的uboot版本为U-Boot 2016.03)
linux内核 linux-4.15(NXP官方提供)
STM32开发板 正点原子战舰V3(STM32F103ZET6)
点击查看本文参考资料
参考方向 参考原文
------
点击查看相关文件下载
--- ---

一、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月,它是一个轻量级的嵌入式数据库。

3.1 Excel

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

image-20220621202131723

创建完工作簿后,我们就进入了这个工作簿,在Excel中,会提前创建好一个默认的工作表:

image-20220621202602557

然后我们就可以开始输入表头,然后,每一行记录一条数据。

3.2 SQLite

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

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

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

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

所以这样一想,其实跟我们平时使用的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,可以在命令行中输入以下命令:

1
sqlite3

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

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

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

1
sudo apt install sqlite3

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

1
sqlite3

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

1
2
3
4
5
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. 编译安装

  • 下载编译安装的源码

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

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

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

image-20220621203002558
  • 解压
1
tar -xvf sqlite-autoconf-3380500.tar.gz
  • 配置
1
2
cd sqlite-autoconf-3380500/
./configure --prefix=/usr/local
  • 编译安装
1
2
make # 编译源码
sudo make install # 安装

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

1
2
3
4
5
6
7
8
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
  • 检测是否安装完成
1
sqlite3

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

1
2
3
4
5
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>

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

3. SQLite的三个基本操作

3.1 进入SQLite

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

1
sqlite3

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

1
2
3
4
5
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>

3.2 创建SQLite数据库

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

1
sqlite3 DatabaseName.db

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

3.3 退出SQLite命令

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

1
sqlite>.quit

这样便可以退出SQLite啦。