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

什么是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语句,并且没有占位符,不能修改sqldb.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.mzph.cn/diannao/48814.shtml

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

相关文章

前端npm下载依赖 idealTree:vue3-demo: sill idealTree buildDeps解决方案

第一步 第二步 第三步 第四步 直接输入npm install就可以安装依赖了

SpringBoot源码(1)ApplicationContext和BeanFactory

1、调用getBean方法 SpringBootApplication public class SpringBootDemoApplication {public static void main(String[] args) {ConfigurableApplicationContext applicationContext SpringApplication.run(SpringBootDemoApplication.class, args);applicationContext.get…

Java强软弱虚引用的特点以及应用场景(面试重点)

强&#xff1a;即使OOM也不回收软&#xff1a;内存溢出前回收弱&#xff1a;只要垃圾收集就死虚&#xff1a;对垃圾收集没关系&#xff0c;只有得到通知&#xff08;插眼&#xff0c;也操作不了对象、只能看到它还活着&#xff09; 一、软引用 代码示例&#xff1a; public cl…

【C++开源】GuiLite:超轻量UI框架-入门

开发环境说明 使用visual Studio 2022进行开发 下载源码 从如下的网址进行源码和示例代码的下载: GitHub源码网址为:idea4good/GuiLite示例代码路径为:idea4good/GuiLiteExample使用方法 GuiLite是一个仅有头文件的一个库,使用的时候直接include到自己的UIcode.cpp文件…

十七、(正点原子)Linux LCD驱动

一、Framebuffer设备 在 Linux 中应用程序通过操作 RGB LCD 的显存来实现在 LCD 上显示字符、图片等信息。 先来看一下裸机 LCD 驱动如下&#xff1a; ①、初始化 I.MX6U 的 eLCDIF 控制器&#xff0c;重点是 LCD 屏幕宽(width)、高(height)、 hspw、 hbp、 hfp、 vspw…

【Python】连接MySQL数据库:详细教程与示例代码

文章目录 1. 安装必要的库2. 建立与MySQL的连接3. 执行SQL查询4. 插入数据5. 更新数据6. 删除数据7. 错误处理8. 小结 在数据驱动的开发中&#xff0c;连接数据库是一个至关重要的技能。Python作为一门强大的编程语言&#xff0c;提供了多种方式连接并操作MySQL数据库。本文将详…

【时时三省】(C语言基础)函数和数组

山不在高&#xff0c;有仙则名。水不在深&#xff0c;有龙则灵。 ——csdn时时三省 函数 跟数学里面的函数很相似 数组 一组相同类型的元素的集合 比如把5个整形1-5存起来 int arr&#xff3b;10&#xff3d;&#xff1d;&#xff5b;1&#xff0c;2&#xff0c;3&#x…

浏览器打开抽奖系统html

<!DOCTYPE html> <html> <head> <meta charset"utf-8"> <title>在线抽奖 随机选取 自动挑选</title> <script src"https://libs.baidu.com/jquery/1.10.2/jquery.min.js"></script> <style> body {…

antdesgin table 组件下载成excel

文章目录 发现宝藏一、需求二、报错 发现宝藏 前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。【宝藏入口】。 一、需求 原组件如下&#xff0c;需要添加下载功能 import React, { useState } from rea…

Spring Boot + Spring Cloud 入门

运行配置 java -jar spring-boot-config-0.0.1-SNAPSHOT.jar --spring.profiles.activetest --my1.age32 --debugtrue "D:\Program Files\Redis\redis-server.exe" D:\Program Files\Redis\redis.windows.conf "D:\Program Files\Redis\redis-cli.exe" &q…

Go语言 Import导入

本文主要介绍Go语言import导入使用时注意事项和功能实现示例。 目录 Import 创建功能文件夹 加法 减法 主函数 优化导入的包名 .引入方法 总结 Import 创建功能文件夹 做一个计算器来演示&#xff0c;首先创建test文件夹。 加法 在test文件夹中创建add文件夹&#xff…

《简历宝典》17 - 简历中“技术能力”,如何丰满且有层次,前端篇

这一节开始对技术能力模块做讲解&#xff0c;我们身边的这些互联网IT从业者们&#xff0c;前端开发、Java开发、软件测试又或者是其他职位的开发者们&#xff0c;技术能力这个模块是绕不过去的&#xff0c;从简历上看&#xff0c;这个模块体现了我们之前软件工作生涯中的技术功…

大厂面试-基本功

大厂面试第4季 服务可用性多少个9是什么意思遍历集合add或remove操作bughashcode冲突案例BigdecimalList去重复IDEA Debugger测试框架ThreaLocal父子线程数据同步 InheritableThreadLocal完美解决线程数据同步方案 TransmittableThreadLocal 服务可用性多少个9是什么意思 遍历集…

【C++高阶】哈希函数底层原理探索:从算法设计到实现优化

&#x1f4dd;个人主页&#x1f339;&#xff1a;Eternity._ ⏩收录专栏⏪&#xff1a;C “ 登神长阶 ” &#x1f921;往期回顾&#x1f921;&#xff1a;模拟实现 map与set &#x1f339;&#x1f339;期待您的关注 &#x1f339;&#x1f339; ❀哈希 &#x1f4da;1. unord…

(ISPRS,2021)具有遥感知识图谱的鲁棒深度对齐网络用于零样本和广义零样本遥感图像场景分类

文章目录 Robust deep alignment network with remote sensing knowledge graph for zero-shot and generalized zero-shot remote sensing image scene classification相关资料摘要引言遥感知识图谱的表示学习遥感知识图谱的构建实体和关系的语义表示学习创建遥感场景类别的语…

ts踩坑!vue3中ts文件用export导出公共方法的ts类型定义

当我们有一个ts文件&#xff0c;定义并export出该function&#xff0c;其中方法里边有定义的变量&#xff0c;方法、钩子函数等多种&#xff0c;并最终return出该变量、方法。 此时 ts规则校验会让我们返回该函数类型。如下 export default function () {const chart ref();c…

Java基础-序列化、泛型、1.8新特性、其他

目录 序列化 什么是序列化&#xff1f;什么是反序列化&#xff1f; Serializable 接口有什么用&#xff1f; serialVersionUID 又有什么用&#xff1f; Java 序列化不包含静态变量吗&#xff1f; 如果有些变量不想序列化&#xff0c;怎么办&#xff1f; 说说有几种序列化…

Yolo-World网络模型结构及原理分析(一)——YOLO检测器

文章目录 概要一、整体架构分析二、详细结构分析YOLO检测器1. Backbone2. Head3.各模块的过程和作用Conv卷积模块C2F模块BottleNeck模块SPPF模块Upsampling模块Concat模块 概要 尽管YOLO&#xff08;You Only Look Once&#xff09;系列的对象检测器在效率和实用性方面表现出色…

计网:物理层

写在开头&#xff1a;物理层就负责传送比特0和1&#xff0c; 本质上理解物理层就是理解传输介质哪个表示比特0和1&#xff0c;如&#xff1a;高电平表示1、低电平表示0等 物理层主要任务&#xff1a; 机械特性&#xff1a;指明接口所用接线器的形状和尺寸、引脚数目和排列、固…

【BUG】已解决:requests.exceptions.ProxyError: HTTPSConnectionPool

已解决&#xff1a;requests.exceptions.ProxyError: HTTPSConnectionPool 目录 已解决&#xff1a;requests.exceptions.ProxyError: HTTPSConnectionPool 【常见模块错误】 原因分析 解决方案 欢迎来到英杰社区https://bbs.csdn.net/topics/617804998 欢迎来到我的主页&am…