sqlite数据库,轻量级数据库的使用

news2024/11/15 14:02:08

什么是sqlite数据库

sqlite是具有零配置、无服务的特点,遵循 ACID 规则,是一款备受欢迎的轻量级数据库。

tips:ACID 规则即,A(原子性)、C(一致性)、I(独立性)、D(持久性)

sqlite常被用于pc端,移动端的操作系统中,同时一些单机的游戏,也会使用sqlite存放数据在本地

相比于mysql数据库,sqlite简单,轻量,无需对它进行任何配置(无需设置账户密码,导入即连接),它仅作为一个数据存放的容器,sqlite中存放的数据(一个数据库)被放在一个 xxx.db 的文件中,在使用sqlite时,只需要导入这个db文件即可,

sqlite是一个纯粹的存储容器,它的数据被存放在文件中,每个sqlite数据库都是一个xxx.db文件,这表示,这个数据可以随意传输,另存保留

sqlite完全兼容sql语法,可以使用任意的sql语句在操作数据库,

安装sqlite

sqlite的官网下载地址: SQLite Download Page

到sqlite的官网下载两个压缩包:sqlite-tools-win32-*.zip 和 sqlite-dll-win32-*.zip 压缩文件

 下载完成后将文件解压到新建的sqlite文件夹下,解压后会获得几个主要文件

这个sqlite3.exe就是sqlite数据库的核心文件,可以点开在命令行查看

此时就成功启动了sqlite,但是这里显示没有找到数据库文件,无法连接到数据库,这是因为命令不完整,接下来设置一下环境变量,全局启用sqlite

环境变量(右击此电脑--->属性--->高级系统设置--->环境变量--->path),设置环境变量是学习编程一定要掌握点

关键在最后一步,把sqlite3.exe所在文件夹的位置 添加到环境变量中,

设置完成后打开cmd命令行输入命令

sqlite3

此时出现了和sqlite3.exe一样的效果,说明环境变量配置成功,

sqlite的使用

下面开始使用sqlite

新建数据库

首先进入一个文件夹中,输入cmd回车进入命令行

然后输入以下命令

sqlite3 xxx.db  打开xxx.db,执行sqlite程序

.database   查看数据库

 这个命令会在当前文件夹下打开一个xxx.db文件(如果文件不存在则新建)

此时没有参数警告信息了,可以查看文件夹中,多出了一个sqlite.db文件(不用管另外哪个js文件,这里没有影响),这就是新建的数据库,r/w表示开启读写权限

使用sql语句

接下来使用sql新建表(sql语句以 ';' 作为结尾,没有';'可以随意换行)

create table users(
  id int primary key,
  name varchar(50),
  email varchar(50),
  password varchar(50)
);

这样就新建了一个表,然后插入一些数据,并查看

insert into users(id,name,email,password) values(1,'admin','admin@gmail.com','admin123');
insert into users(id,name,email,password) values(2,'user','user@gmail.com','user123');
select * from users;

但是这样开启了不太直观,可以改变sqlite的数据展示模式

.mode box

这样数据就很直观了,默认的展示格式是list,这里改成了box

同样的删除数据,更新数据,都可以使用对应的sql语句,这里就不赘述了,

.exit 退出sqlite
.help 查看sqlite所有命令

sqlite的常用命令

sqlite:
命令行打开sqlite命令:sqlite3 文件位置<xxx.db>
查看数据库:.database
设置表的展示格式: .mode (list<默认>, column, insert<展示插入语句>, line, tab<无线表格>, table<有线表格> , tcl<字符形式> , box<盒子形式> , json)
设置显示行数:.headers on/off
查看表:.table
查看表结构:.schema
导出到文件: .output 文件位置 <使用json展示格式,导出成json文件--->.output xxx.json .mode json sql查询语句 注意:此命令会创建一个空的文件,若文件存在则会被置空 >
执行sql脚本:.read 文件位置 <xxx.sql>

### sql语句以';'结束
查看表内容:select * from 表名
删除表:drop table 表名
删除表内容:delete from 表名
插入数据:insert into 表名 values (值1,值2,...)
更新数据:update 表名 set 列名=新值 where 条件
查询数据:select * from 表名 where 条件
删除数据:delete from 表名 where 条件

.output和.read 

这里重点展示.output和.read 的用法

导出json数据

sqlite3 sqlite.db
.database
.output data.json
.mode json
select * from users;

这里将users表中的数据以json的格式导出到data.json中了,

注意: 要导出json需要将数据展示调成json (.mode json),然后再使用sql语句查看数据,这样就将数据写入到了json文件中

执行sql脚本

首先新建sql文件夹,里面准备几个xxx.sql文件,内部包含sql语句

createTable.sql: 新建一个users表

create table users(
  id int primary key,
  name varchar(50),
  email varchar(50),
  password varchar(50)
);

deleteTable.sql: 删除users表

drop table users

insertValues.sql: 插入数据到users表

insert into users(id,name,email,password) values(1,'admin','admin@gmail.com','admin123');
insert into users(id,name,email,password) values(2,'user','user@gmail.com','user123');

selectTable.sql:  查看users表中的数据

select * from users;

 然后来执行这些脚本:

sqlite3 sqlite.db
.database
.read ./sql/selectTable.sql

注意:执行sql脚本要使用文件位置,而不是文件名称 

其他的sql脚本可以自行尝试

使用.read命令可以像使用函数一样取操作sqlite数据库,这样可以减少再命令行重复敲大量的代码

使用nodejs操作sqlite数据库

除了命令行使用sqlite数据库,同样的可以用编程语言来使用sqlite数据库,这里展示js使用sqlite的用法,

首先需要安装sqlite3这个包

npm install sqlite3

然后新建一个sqlite.js文件

const sqlite = require('sqlite3').verbose();
// 引入 sqlite3 模块后,执行了 verbose 函数。 verbose 函数用于将执行模式设置为输出调用堆栈,
// 也就是说,如果代码出错, 将会定位到具体的代码执行函数,而不仅仅只是提示错误信息,方便我们调试代码

// console.log(sqlite);

const db = new sqlite.Database('./sqlite.db',sqlite.OPEN_READWRITE,(err)=>{// sqlite.OPEN_READWRITE开启读写权限
    if(err){
      console.log(err);
      return;
    } 
    console.log('数据库连接成功!');
} ); // 创建一个数据库连接

console.log(db);

// serialize 方法,顾名思义,指定操作串行执行(确保这些异步操作按书写顺序执行),接受一个回调函数,内部执行run方法
// run方法,执行sql语句,接受3个参数,第一个参数是sql语句,第二个参数是一个数组,用于替换sql语句中的占位符(?),第三个参数是一个回调函数,用于处理执行结果
// all方法,执行sql语句,接受3个参数,第一个参数是sql语句,第二个参数是一个数组,用于替换sql语句中的占位符(?),第三个参数是一个回调函数,用于处理执行结果
// all方法与run方法的区别在于,all的回调多了一个参数rows,用于返回查询结果,所以查询结果使用all方法
// exec方法, 执行多条sql语句,接受2个参数, 第一个参数是sql语句,第二个参数是一个回调函数,用于处理执行结果
// exec方法,与run方法的区别在于,exec可以执行多条sql语句(用';'隔开),而run只能执行一条sql语句,并且没有占位符,不能修改sql

db.serialize(()=>{
  
  db.run("insert into users(id,name,email,password) values(?,'my','my@gmail.com','123');",[4],(err)=>{
    if(err){
      console.log(err);
      return;
    }
  })

  db.all('select * from users;',[],(err,rows)=>{
    if(err){
      console.log(err);
      return;
    }
    console.log(rows);
  })
})

db.close(); // 关闭数据库连接

执行这个sqlite.js文件,node sqlite.js

这样就成功读取到了sqlite数据库中的信息

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1931884.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

第一百六十七节 Java IO教程 - Java Zip字节数组

Java IO教程 - Java Zip字节数组 校验和 Java在java.util.zip包中提供了一个Adler32类来计算数据字节的Adler-32校验和。 我们需要调用这个类的update()方法将字节传递给它。 在同一个包中还有另一个名为CRC32的类&#xff0c;它允许您使用CRC32算法计算校验和。 以下代码…

2.10、matlab中字符、数字、矩阵、字符串和元胞合并为字符串并将字符串以不同格式写入读出excel

1、前言 在 MATLAB 中&#xff0c;可以使用不同的数据类型&#xff08;字符、数字、矩阵、字符串和元胞&#xff09;合并为字符串&#xff0c;然后将字符串以不同格式写入 Excel 文件。 以下是一个示例代码&#xff0c;展示如何将不同数据类型合并为字符串&#xff0c;并以不…

Java的maven项目pom文件因为版本问题导入失败的处理办法

前言 今天遇到的一个问题&#xff0c;而且网上的答案很乱&#xff0c;几乎每人各执一词&#xff0c;年份还差距很远&#xff0c;几乎没有为我解决问题提供什么帮助&#xff0c;感觉蛮怪的&#xff0c;确实不常见&#xff0c;但不应该每次都靠降低版本来解决这种小类小bug&…

【文心智能体】前几天百度热搜有一条非常有趣的话题《00后疯感工牌》,看看如何通过低代码工作流方式实现图片显示

00后疯感工牌体验&#xff1a;https://mbd.baidu.com/ma/s/6yA90qtM 目录 前言比赛推荐工作流创建工作流入口创建工作流界面工作流界面HTTP工具卡点地方 总结推荐文章 前言 前几天百度热搜有一条非常有有趣《00后疯感工牌》。 想着通过文心智能体去一键生成00后疯感工牌是不是…

防火墙的冗余基础知识+实验检测

将之前先理清需要注意的知识点&#xff1a; 1、注意防火墙冗余时的会话表必须保持一致&#xff0c;这里HRP技术已经做到 2、vrrp是自动开启抢占的&#xff0c;且是根据优先级进行抢占的 3、免费ARP的作用&#xff1a;告诉交换机的某个IP的mac地址变成了我的这个mac地址 4、HRP …

Calibration相机内参数标定

1.环境依赖 本算法采用张正友相机标定法进行实现&#xff0c;内部对其进行了封装。 环境依赖为 ubuntu20.04 opencv4.2.0 yaml-cpp yaml-cpp安装方式&#xff1a; &#xff08;1&#xff09;git clone https://github.com/jbeder/yaml-cpp.git #将yaml-cpp下载至本地 &a…

Sentinel规则持久化Push模式两种实现方式

文章目录 sentinel持久化push推模式微服务端的实现具体实现源码分析读数据源写数据源的实现 微服务端解析读数据源流程 修改源码的实现官方demo修改源码实现配置类flowauthoritydegreadparamsystemgateway修改源码 测试补充 前置知识 pull模式 sentinel持久化push推模式 pull拉…

效率飙升!用升级版思维导图搞定测试用例

Xmind思维导图&#xff1c;转&#xff1e;测试用例_如何将xmind改成测试用例-CSDN博客https://weiyv.blog.csdn.net/article/details/135920569 上一次的【xmind思维导图转测试用例】的文章浏览量飙升&#xff0c;这一次把工具又进行升级啦&#xff0c;是在线版的免费工具哦&am…

JRebelXRebel在线激活(亲测可用)

包含所有新旧版本&#xff0c;包括2023.4.2、2023.4.1、2023.4.0、2023.3.2、2023.3.1、2023.3.0、2023.2.2、2023.2.1、2023.2.0、2023.1.2、2023.1.1 等以及所有2022版本 JRebel&XRebel激活服务器地址 激活服务器地址&#xff08;路线1,推荐&#xff09;&#xff0c;可…

文本到 3D AI 生成——Meta 3D Gen、OpenAI Shap-E工作原理与算法解析

概述 根据文本提示生成 3D 数字资产的能力代表了人工智能和计算机图形学领域最近最令人兴奋的发展之一。随着 3D 数字资产市场规模预计将从2024 年的 28.3 亿美元增加到 2029 亿美元&#xff0c;文本转 3D 人工智能模型将在游戏、电影、电子商务等行业的内容创作革命中发挥重要…

【论文阅读】(StemGNN)多元时间序列预测的谱时间图神经网络

&#xff08;StemGNN&#xff09;Spectral Temporal Graph Neural Network for Multivariate Time-series Forecasting 引用&#xff1a; Cao D , Wang Y , Duan J ,et al.Spectral Temporal Graph Neural Network for Multivariate Time-series Forecasting[J]. 2021.DOI:10.…

揭秘“循环乐购”:消费赠礼,每日返利

大家好&#xff0c;我是吴军&#xff0c;今天作为您的电商策略顾问&#xff0c;将带您深入探索一种前所未有的商业模式——“循环乐购”。在这个模式中&#xff0c;消费不再是单向支出&#xff0c;而是成为了开启财富增值的钥匙。您是否好奇&#xff0c;为何有人能在享受购物乐…

ESP32部署TensorFlow Lite

本来是想找一篇中文教程&#xff0c;不过只看到一个英文官方的&#xff0c;也行吧&#xff0c;虽然效率会慢丢丢。 GitHub - espressif/esp-tflite-micro: TensorFlow Lite Micro for Espressif Chipsets 看了一圈&#xff0c;有个中文的&#xff1a; esp-dl/README_cn.md a…

C语言之大小端理解

目录 1前言2 大小端理解与区分3 大小端的识别和基本切换操作4 总结 1前言 在汽车CAN通讯报文中往往会接触到Intel类型和motorola类型&#xff0c;实际项目中涉及到多机通讯也会接触到大小端问题 2 大小端理解与区分 大端(Big_Endian) :低字节放在高地址小端(Little_Endian):…

STM32 BootLoader 刷新项目 (三) 程序框架搭建及刷新演示

STM32 Customer BootLoader 刷新项目 (三) 程序框架搭建 文章目录 STM32 Customer BootLoader 刷新项目 (三) 程序框架搭建典型工作流程 1. 硬件原理图介绍1.1 USART硬件介绍1.2 LED和按键介绍 2. STM32 CubeMX工程搭建2.1 创建工程2.2 系统配置2.3 USART串口配置2.4 配置按键G…

SSE(Server Sent Event)实战(2)- Spring MVC 实现

一、服务端实现 使用 RestController 注解创建一个控制器类&#xff08;Controller&#xff09; 创建一个方法来创建一个客户端连接&#xff0c;它返回一个 SseEmitter&#xff0c;处理 GET 请求并产生&#xff08;produces&#xff09;文本/事件流 (text/event-stream) 创建…

QT小细节

QT小细节 1 QTextToSpeech1.1 cmake1.2 qmake QT6 6.7.2 1 QTextToSpeech 从下图可以看到&#xff0c;分别使用qmake或者cmake编译情况下的&#xff0c;QTextToSpeech的使用方法 QTextToSpeech官方链接&#xff0c;也可以直接在QT Creator的帮助中搜索 1.1 cmake 将上图中的…

无人机之机型区别与应用领域

一、多旋翼无人机 特点&#xff1a;多旋翼无人机依靠产生升力以平衡飞行器的重力&#xff0c;通过改变每个旋翼的转速来控制飞行姿态&#xff0c;能够悬停和垂直起降。他们具备体积小、重量轻、噪音小、隐蔽性好的特点&#xff0c;操作灵活且易于维护。 应用&#xff1a;多旋…

django踩坑(四):终端输入脚本可正常执行,而加入crontab中无任何输出

使用crontab执行python脚本时&#xff0c;有时会遇到脚本无法执行的问题。这是因为crontab在执行任务时使用的环境变量与我们在终端中使用的环境变量不同。具体来说&#xff0c;crontab使用的环境变量是非交互式(non-interactive)环境变量&#xff0c;而终端则使用交互式(inter…

补充.IDEA的使用

首先我们要了解在idea中Java工程由项目&#xff08;project&#xff09;、模块&#xff08;module&#xff09;包&#xff08;package&#xff09;、类&#xff08;class&#xff09;组成。 他们之间的关系是project包含module包含package包含class。 所以我们要按照先建一个pr…