SQLite3的使用

news2024/9/20 9:39:34

14_SQLite3

SQLite3是一个嵌入式数据库系统,它的数据库就是一个文件。SQLite3不需要一个单独的服务器进程或操作系统,不需要配置,这意味着不需要安装或管理,所有的维护都来自于SQLite3软件本身。

安装步骤

在Linux上安装SQLite3:

  1. sudo apt-get update 更新软件库
  2. sudo apt-get install libsqlite3 安装libsqlite3
  3. sudo apt-get install libsqlite3-dev 安装libsqlite3依赖库
  4. sqlite3 运行

SQLite3的使用

以“.”开头的命令

命令说明
.archive …管理SQL归档文件
.auth ON|OFF显示授权回调函数
.backup ?DB? FILE将数据库DB(默认为“main”)备份到FILE
.bail on|off在错误发生后停止。默认为OFF
.binary on|off打开或关闭二进制输出。默认为OFF
.cd DIRECTORY将工作目录更改为DIRECTORY
.changes on|off显示SQL更改的行数
.check GLOB如果自从.testcase以来的输出不匹配,则失败
.clone NEWDB从现有数据库克隆数据到NEWDB中
.databases列出附加数据库的名称和文件
.dbconfig ?op? ?val?列出或更改sqlite3_db_config()选项
.dbinfo ?DB?显示有关数据库的状态信息
.dump ?TABLE? …将所有数据库内容呈现为SQL
.echo on|off打开或关闭命令回显
.eqp on|off|full|…启用或禁用自动EXPLAIN QUERY PLAN
.excel在电子表格中显示下一个命令的输出
.exit ?CODE?以返回代码CODE退出此程序
.expert实验性功能。为查询建议索引
.explain ?on|off|auto?更改EXPLAIN格式模式。默认值:auto
.filectrl CMD …运行各种sqlite3_file_control()操作
.fullschema ?–indent?显示模式和sqlite_stat表的内容
.headers on|off打开或关闭标题的显示
.help ?-all? ?PATTERN?显示有关PATTERN的帮助文本
.import FILE TABLE将数据从FILE导入TABLE
.imposter INDEX TABLE在索引INDEX上创建仿冒表TABLE
.indexes ?TABLE?显示索引的名称
.limit ?LIMIT? ?VAL?显示或更改SQLITE_LIMIT的值
.lint OPTIONS报告潜在的模式问题。
.load FILE ?ENTRY?加载扩展库
.log FILE|off打开或关闭日志记录。文件可以是stderr/stdout
.mode MODE ?TABLE?设置输出模式
.nullvalue STRING在NULL值的位置使用字符串STRING
.once (-e|-x|FILE)仅将下一个SQL命令的输出发送到FILE
.open ?OPTIONS? ?FILE?关闭现有数据库并重新打开FILE
.output ?FILE?将输出发送到FILE,如果省略FILE,则发送到stdout
.parameter CMD …管理SQL参数绑定
.print STRING…打印文本字符串STRING
.progress N在每个N操作码后调用进度处理程序
.prompt MAIN CONTINUE替换标准提示符
.quit退出此程序
.read FILE从FILE读取输入
.recover尝试从损坏的数据库中恢复尽可能多的数据。
.restore ?DB? FILE从FILE还原数据库DB(默认为“main”)的内容
.save FILE将内存中的数据库写入FILE
.scanstats on|off打开或关闭sqlite3_stmt_scanstatus()指标
.schema ?PATTERN?显示与PATTERN匹配的CREATE语句
.selftest ?OPTIONS?运行在SELFTEST表中定义的测试
.separator COL ?ROW?更改列和行分隔符
.session ?NAME? CMD …创建或控制会话
.sha3sum …计算数据库内容的SHA3哈希值
.shell CMD ARGS…在系统Shell中运行CMD ARGS…
.show显示各种设置的当前值
.stats ?on|off?显示统计信息或打开/关闭统计信息
.system CMD ARGS…在系统Shell中运行CMD ARGS…
.tables ?TABLE?列出LIKE模式为TABLE的表名
.testcase NAME开始将输出重定向到“testcase-out.txt”
.testctrl CMD …运行各种sqlite3_test_control()操作
.timeout MS尝试以MS毫秒为间隔打开已锁定表
.timer on|off打开或关闭SQL计时器
.trace ?OPTIONS?在每个SQL语句执行时输出
.vfsinfo ?AUX?有关顶级VFS的信息
.vfslist列出所有可用的VFS
.vfsname ?AUX?打印VFS堆栈的名称
.width NUM1 NUM2 …设置“ column”模式的列宽度

SQL语句

以下是SQLite 3中常用的SQL语句:

  1. 创建表格
CREATE TABLE table_name (
  column_1 data_type constraints,
  column_2 data_type constraints,
  ...,
  column_n data_type constraints
);

字段名column_1;数据类型data_type;约束条件constraints

  1. 删除表格
DROP TABLE table_name;
  1. 查询数据
SELECT column_1, column_2, ..., column_n 
FROM table_name;
  1. 插入数据
INSERT INTO table_name (column_1, column_2, ..., column_n)
VALUES (value_1, value_2, ..., value_n);
  1. 更新数据
UPDATE table_name
SET column_1 = value_1, column_2 = value_2, ..., column_n = value_n
WHERE condition;
  1. 删除数据
DELETE FROM table_name WHERE condition;

示例:创建

以下是使用SQLite 3创建一个名为“students”的学生信息表并插入三个学生信息的示例:

  1. 打开shell命令行终端。
  2. 连接到您的SQLite数据库文件。
$ sqlite3 mydatabase.db

备注:$表示在shell命令行的命令行提示符
出现如下界面表示sqlite3打开成功,版本不同显示信息会略有差异

QLite version 3.31.1 2020-01-27 19:55:54
Enter ".help" for usage hints.
sqlite> 
  1. 创建一个名为“students”的学生信息表。该表将包含以下列:ID,姓名,年龄,性别和成绩。
sqlite> CREATE TABLE students ( --创建表students
   ...> ID INTERGER PRIMARY KEY NOT NULL, 
   ...> name TEXT NOT NULL, 
   ...> age INTEGER NOT NULL,
   ...> gender TEXT NOT NULL,
   ...> score REAL NOT NULL);

备注:sqlite> ...>是sqlite3的命令行提示符

作为主键PRIMARY KEY;数据类型为整数INTERGER;不能为空NOT NULL;数据类型为文本TEXT;数据类型为实数REAL

此时,可以输入.table命令检查表student是否创建成功,如下所示:

sqlite> .table
students

如果没有创建成功,或者表被删除,将会什么也不显示,例如此时执行DROP语句,将看不到表了

sqlite> DROP TABLE students; --删除表students
sqlite> .table
sqlite>

重复上面的CREATE TABLE(为了放便大家复制,粘贴后面把sqlite3>, ...>都省略了)

CREATE TABLE students (
ID INTERGER PRIMARY KEY NOT NULL,
name TEXT NOT NULL,
age INTEGER NOT NULL,
gender TEXT NOT NULL,
score REAL NOT NULL);
  1. 插入三个学生信息。例如:
INSERT INTO students (ID, name, age, gender, score)
   ...> values(1,'张三', 18, '男', 90.0);
INSERT INTO students (ID, name, age, gender, score)
values(2,'子涵', 18, '女', 88.5);
INSERT INTO students (ID, name, age, gender, score)
values(3, '张伟', 19, '男', 82.5);

这将向学生信息表中添加三条记录。每条记录都包含姓名、年龄、性别和分数等列的值。由于我们使用了自增长的主键列ID,因此每个记录都将在插入时自动被赋予一个唯一的ID值。

  1. 确认学生信息已成功插入。可以使用SELECT语句来检索学生信息表中的所有行。例如:
select * FROM students;
1|张三|18|男|90.0
2|子涵|18|女|88.5
3|张伟|19|男|82.5

如果嫌弃这种界面,可以执行.headers on和.mode column,再执行SELECT语句,就好看了,如下图:

sqlite> .headers on 
sqlite> .mode column
sqlite> select * FROM students;
ID          name        age         gender      score     
----------  ----------  ----------  ----------  ----------
1           张三          18          男           90.0      
2           子涵          18          女           88.5      
3           张伟          19          男           82.5  

显示表头.headers on ;设置显示方式,每列用空格分开.mode column ;

  1. 退出SQLite shell或关闭终端会话。
sqlite> .exit

在这里插入图片描述

示例:查询

  1. 打开数据库

    sqlite3 mydatabase.db
    
  2. 查询表students中的所有数据

    SELECT * FROM students;
    
  3. 查询年龄为17的学生信息

    SELECT * FROM students WHERE age = 17;
    

    过滤结果集的关键字WHERE;

  4. 如果只想返回一条记录,可以使用 LIMIT 子句限制结果集的大小

    SELECT * FROM students WHERE age = 17 LIMIT 1;
    
  5. 查询年龄大于17,分数大于90的学生信息

    SELECT * FROM students WHERE age > 10 AND score >90;
    

    在这里插入图片描述

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

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

相关文章

python桌面应用

py文件 import osimport wx import wx.html2class MyFrame(wx.Frame):def __init__(self, parent):wx.Frame.__init__(self, parent, title"启动啦", size(1000, 700))# 创建一个Web视图组件self.browser wx.html2.WebView.New(self)# 加载本地HTML文件# self.brow…

WebFlux 和 Spring Security 会碰出哪些火花?

项目创建成功后,我们添加一个接口,用来获取登录用户信息,如下: RestController public class UserController { GetMapping(“/user”) public Mono getCurrentUser(Mono principal) { return principal; } } 注意我们的返…

【Leetcode每日一题】 01背包 - DP41 【模板】01背包(难度⭐⭐)(80)

1. 题目解析 题目链接:DP41 【模板】01背包 这个问题的理解其实相当简单,只需看一下示例,基本就能明白其含义了。 2.算法原理 第一问:不超过总体积的背包问题 1. 状态表示 dp[i][j] 表示:从前 i 个物品中挑选&…

android adb常用命令集

1、系统调试 #adb shell:进入设备的 shell 命令行界面,可以在此执行各种 Linux 命令和特定的 Android 命令。 #adb shell dumpsys:提供关于系统服务和其状态的详细信息。 #adb logcat:实时查看设备的日志信息。可以使用过滤条件来…

Arduino称重传感器和 HX711 放大器(数字秤)

Arduino称重传感器和 HX711 放大器(数字秤) Arduino with Load Cell and HX711 Amplifier (Digital Scale) In this guide, you’ll learn how to create a digital scale with the Arduino using a load cell and the HX711 amplifier. First, you’l…

二叉树-左叶子之和(easy)

目录 一、问题描述 二、解题思路 三、代码实现 四、刷题链接 一、问题描述 二、解题思路 此题属于树遍历的简单题,用递归深度遍历的方式,当遇到左叶子结点(在递归函数中加上一个判断当前结点是左结点还是右结点的标记位),此时加上当前结点…

ONLYOFFICE 桌面编辑器 8.1:全新升级,助您轻松高效处理办公文档

ONLYOFFICE 桌面编辑器 一、前言二、轻松编辑器 PDF 文件三、用幻灯片版式快速修改幻灯片四、无缝切换文档编辑、审阅和查看模式五、改进从右至左语言的支持 & 新的本地化选项六、版本 8.1:其他新功能七、ONLYOFFICE 官网:https://www.onlyoffice.co…

OnlyOffice8.1新功能测评

一、导语 时隔四个月,OnlyOffice推出了8.1版本。 四个月过去,笔者的项目也接近尾声,在项目过程中还把OnlyOffice插件推荐给了项目组,希望官方多出好用功能,造福我们广大项目O(∩_∩)O 回归正题,与前几个…

【数据结构与算法】之(数据结构绪论篇)(一)溢彩色

总而言之:《数据结构》是介于数学、计算机硬件和计算机软件三者之间的一门核心课程 1-1.抽象数据类型: 一个数学模型及定义在该模型上的一组操作;抽象数据类型体现了程序设计中问题分解,抽象和信息隐藏的特性。 抽象&#xff1a…

最新《pvz植物大战僵尸杂交版》整合安装包,全面支持Android、ios、Windows,附教程!

今天,阿星要聊聊最近全网大火的一款老游戏——《植物大战僵尸》杂交版。 虽然它不是什么3A大作,但在阿星的心里,它永远是那个让人回味无穷的经典。记得十年前,阿星和大多数玩家一样,玩的都是盗版。那时候的《植物大战…

【人机交互 复习】第1章 人机交互概述

人机交互的知识点碎,而且都是文字,过一遍脑子里什么都留不下,但是背时间已经来不及了,最好还是找题要题感吧,加深印象才是做对文科的关键 一、概念 1.人机交互(Human-Computer Interaction,HCI)&#xff1…

路由器ARP和ARP-proxy(华为)

#交换设备 路由器ARP和ARP-proxy(华为) 当一个广播域中的主机想要访问另外一个广播域的主机时,会广播ARP报文,询问目标IP地址所对应的MAC地址,默认情况下,arp记录是设备自动生成的,但是这样会容易受到ARP欺骗攻击&am…

系统架构设计师 - 数据库系统(2)

数据库系统 数据库系统规范化理论 ★ ★ ★ ★ ★函数依赖求候选键Armstrong公理范式判断第一范式 1NF第二范式 2NF第三范式 3NFBC 范式 BCNF 模式分解保持函数依赖分解无损分解 并发控制 ★事务的 ACID 特性并发存在的问题并发解决方案 - 封锁协议 数据库的安全性 ★安全性的分…

C++多线程异步日志实现

使用C11标准&#xff0c;构建了一个方便使用的、轻量化的日志系统。封装线程安全的lockQueue&#xff0c;实现对每条日志添加信息、push到lockQueue中的LogTmp类&#xff0c;实现一个多线程异步的日志系统Logger。 lockqueue.h #pragma once #include <queue> #include…

pdf转图片转换器,pdf转图片的工具

在日常的工作和学习中&#xff0c;我们经常会遇到需要将PDF文件转换为图片格式的情况。那么&#xff0c;如何才能将PDF格式转换为图片格式呢&#xff1f;今天&#xff0c;我将为大家介绍几种简单易用的方法&#xff0c;帮助大家轻松实现PDF转图片。 打开“轻云pdf处理官网网站”…

Linux 动态监控系统

top与ps命令很相似。它们都用来显示正在执行的进程。Top与ps最大的不同之处&#xff0c;在于top在执行一段时间可以更新正在运行的的进程。 一、基本指令 top top -d&#xff1a; 秒数 :每隔设定值秒数更新&#xff0c;未设置下默认为3秒 top -i:使top不显示任何闲置或者僵死进…

行人重识别Reid(可实现人员换装情况下的人员检索)

本项目的行人重识别是出自论文"Beyond Scalar Neuron: Adopting Vector-Neuron Capsules for Long-Term Person Re-Identification",该文章所涉及到的相关理论在我另外一篇文章中有讲解&#xff1a;Reid系列论文学习——换装Reid&#xff0c;不过经过本人测试&#x…

高清录屏软件哪个好用?分享这3款录屏软件

在我们的日常生活和工作中&#xff0c;视频录制是我们经常需要使用到的功能。不仅可以帮助我们录制网课内容方便后期复习&#xff0c;还可以录制视频会议&#xff0c;记录上级指示&#xff0c;甚至可以通过录制一些视频教程或游戏视频上传网络进行分享。 对电脑屏幕进行录制&a…

postman教程-22-Newman结合Jenkins执行自动化测试

上一小节我们学习了Postman Newman运行集合生成测试报告的方法&#xff0c;本小节我们讲解一下Postman Newman结合Jenkins执行自动化测试的方法。 在软件开发过程中&#xff0c;持续集成&#xff08;CI&#xff09;是一种实践&#xff0c;旨在通过自动化的测试和构建过程来频繁…