【树莓派不吃灰】基础篇⑯ 搭建sqlite3数据库环境

在这里插入图片描述

  • ❤️ 博客主页 单片机菜鸟哥,一个野生非专业硬件IOT爱好者 ❤️
  • ❤️ 本篇创建记录 2022-11-08 ❤️
  • ❤️ 本篇更新记录 2022-11-08 ❤️
  • 🎉 欢迎关注 🔎点赞 👍收藏 ⭐️留言 📝
  • 🙏 此博客均由博主单独编写,不存在任何商业团队运营,如发现错误,请留言轰炸哦!及时修正!感谢支持!
  • 🔥 Arduino ESP8266教程累计帮助过超过1W+同学入门学习硬件网络编程,入选过选修课程,刊登过无线电杂志🔥

1. 前言

说到数据库,一般人肯定会想到MySQL。

但是MySQL占用内存太大,部署在嵌入式设备中不一定是一个明智的选择。

SQLite是一个进程内的库,实现了自给自足的、无服务器的、零配置的、事务性的 SQL 数据库引擎。它是一个零配置的数据库,这意味着与其他数据库不一样,您不需要在系统中配置

就像其他数据库,SQLite 引擎不是一个独立的进程,可以按应用程序需求进行静态或动态连接。SQLite 直接访问其存储文件。

1.1 SQLite 官方说明

SQLite官网:https://www.sqlite.org/index.html
在这里插入图片描述
大概意思就是:

  • SQLite是一个C语言库,它实现了一个小型、快速、自包含、高可靠性、全功能的SQL数据库引擎。SQLite是世界上使用最多的数据库引擎。SQLite内置于几乎所有的移动电话和大多数计算机中,并捆绑在人们每天使用的无数其他应用程序中。
  • SQLite文件格式是稳定的、跨平台的、向后兼容的,开发人员保证至少在2050年以前保持这种格式。SQLite数据库文件通常用作在系统之间传输丰富内容的容器,并作为数据的长期存档格式。目前有超过1万亿(1 trillion)个SQLite数据库在使用中。
  • SQLite源代码在公共域中,每个人都可以自由使用。

1.2 为什么要用 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)中运行

基于以上特点,非常适合在树莓派和其他嵌入式系统中使用。

2. 搭建sqlite环境

2.1 安装sqlite3

首先输入命令:

sudo apt-get update
sudo apt-get install sqlite3

在这里插入图片描述
再次输入命令:

sqlite3 -version

在这里插入图片描述
当前版本是 3.34.1版本。

2.2 创建或者打开数据库文件

SQLite是以文件形式存在,一个数据库就是一个文件(db文件)。

  • 创建一个数据库存放目录

mkdir sqlite3
在这里插入图片描述

  • 创建或者打开数据库文件 dpjcn.db
  • sqlite3 dpjcn.db
    在这里插入图片描述

在当前目录sqlite3下创建一个数据库文件dpjcn.db,同时挂载到SQLite3上,该文件将被 SQLite 引擎用作数据库

如果dpjcn.db已存在就打开并挂载这个文件。

这时候我们就可以使用sqlite对应的一些命令了。

2.3 创建表 —— create table语句

在我们的智能家居系统中有一些温度传感器,我们将这些温度传感器的数据存在这张表中。

  • 创建表
create table temperature(
id INTEGER PRIMARY KEY,
deviceid varchar(20) default '0',
time varchar(20) default '0',
battery_voltage int default 0,
celsius_temp real default 0
);

在这里插入图片描述

  • 查表temperature的结构

.schema temperature
在这里插入图片描述
总共有5个字段:

  • id 自增
  • deviceid 设备id,字符型
  • time 时间,字符型
  • battery_voltage 电量,int型,默认值0
  • celsius_temp 温度,浮点型,默认值0

2.4 插入数据 —— insert 语句

直接输入:

insert into temperature (deviceid, time, battery_voltage, celsius_temp) values('temp001', '2020-07-28 17:25:35', 3451, 26.75);
insert into temperature (deviceid, time, battery_voltage, celsius_temp) values('temp001', '2020-07-28 17:25:45', 3454, 25.50);
insert into temperature (deviceid, time, battery_voltage, celsius_temp) values('temp001', '2020-07-28 17:25:55', 3453, 24.35);

在这里插入图片描述

2.5 查询数据 —— select 语句

  • 查询所有记录
    在这里插入图片描述
  • 查询id = 2的记录
    在这里插入图片描述
  • 查询deviceid = temp001的第一条记录
    在这里插入图片描述

2.6 修改数据 —— update 语句

查询id = 2的记录,将温度从25.5改成25.65
在这里插入图片描述

2.7 删除数据 —— delete 语句

  • 删除id = 2的记录
    在这里插入图片描述
  • 删除所有记录
    在这里插入图片描述

2.8 删除表 —— drop table 语句

在这里插入图片描述

2.9 退出SQLite —— .quit

在这里插入图片描述

3. 导出完整的数据库到文本文件sql —— .dump命令

可以在命令提示符中使用 SQLite .dump 点命令来导出完整的数据库在一个文本文件中,如下所示:
在这里插入图片描述

PRAGMA foreign_keys=OFF;
BEGIN TRANSACTION;
CREATE TABLE temperature(
id INTEGER PRIMARY KEY,
deviceid varchar(20) default '0',
time varchar(20) default '0',
battery_voltage int default 0,
celsius_temp real default 0
);
INSERT INTO temperature VALUES(1,'temp001','2020-07-28 17:25:35',3451,26.749999999999998223);
INSERT INTO temperature VALUES(2,'temp001','2020-07-28 17:25:45',3454,25.499999999999998223);
INSERT INTO temperature VALUES(3,'temp001','2020-07-28 17:25:55',3453,24.350000000000000532);
COMMIT;

这里就是一个sql执行语句,很多情况下我们可以在本地写好这个语句文件,然后直接导入到sqlite里面执行,不需要自己一个个字符输入。

4. 通过sql文件创建数据表和插入数据

  • 删除表
    drop table temperature;

  • 通过简单的方式从生成的 dpjcn.sql 恢复
    sqlite3 dpjcn.db < dpjcn.sql
    在这里插入图片描述

通过这种sql文件的方式,我们可以把我们本地的数据直接复制一份给到其他设备。比如创建一个dpjcn.sh脚本:

#!/bin/sh

DBNAME="dpjcn.db"

rm -f $DBNAME

echo 开始插入数据

sqlite3 $DBNAME < dpjcn.sql

echo 插入完成

注意:

chmod a+x dpjcn.sh增加可执行权限

在这里插入图片描述
直接执行脚本试试。
在这里插入图片描述

5. 总结

sqlite非常适合在树莓派和其他嵌入式系统中使用,对于我们学习来说还是有必要学习一番,最好是结合sqlite语法来操作学习,后续结合服务器开发使用。

  • 4
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

单片机菜鸟爱学习

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值