sqlite基础

news2024/11/25 13:13:01

一.sqlite基础

1.下载与环境配置

从下载地址,点击我 这里下载适合你版本的压缩包

  • 您需要下载 sqlite-tools-win32-*.zipsqlite-dll-win32-*.zip 压缩文件。
  • 创建文件夹 C:\sqlite,并在此文件夹下解压上面两个压缩文件,将得到 sqlite3.def、sqlite3.dll 和 sqlite3.exe 文件。
  • 添加 C:\sqlite 到 PATH 环境变量

注意,配置成功可以在命令端口输入sqlite3命令,出现以下即创建成功:

C:\>sqlite3
SQLite version 3.7.15.2 2013-01-09 11:53:05
Enter ".help" for instructions
Enter SQL statements terminated with a ";"
sqlite>

如果你想在Linux中下载,只需要使用yum -y install sqlite命令下载即可,还不需要环境配置。

2.数据类型

数据类型描述存储空间
NULL空值
INTEGER整型数1、2、3、4、6 或 8 字节的有符号整数
REAL浮点数8 字节的 IEEE 浮点数
TEXT文本字符串根据数据长度和数据库编码进行变化
BLOB二进制数据根据数据长度进行变化

注意:SQLite 没有 unsigned 整数类型。所有 INTEGER 类型都是有符号整数类型。如果您需要存储无符号整数,可以考虑将其存储为字符串或使用带符号整数类型,并在应用程序中进行转换。例如,对于一个 4 字节的无符号整数,可以使用 INTEGER 类型进行存储,然后在读取数据时将其转换为无符号整数。另外,SQLite 中的 INTEGER 类型也可以用于存储布尔类型,值为 0 或 1。

二.数据库操作

1.建立数据库

两种方式:

  • 1..open filename 他的本来意思是打开,但如果不存在对应的数据库,就变成了新建立一个数据库的意思。
  • 2.sqlite3 filename正常创建命令

一旦数据库被创建,您就可以使用 SQLite 的 .databases 命令来检查它是否在数据库列表中。

2.导入/导出数据库

sqlite3 testDB.db .dump > testDB.sql           --导出
sqlite3 testDB.db < testDB.sql                 --导入

3.创建表

SQLite 的 CREATE TABLE 语句用于在任何给定的数据库创建一个新表。创建基本表,涉及到命名表、定义列及每一列的数据类型。

CREATE TABLE database_name.table_name(
   column1 datatype  PRIMARY KEY(one or more columns),
   column2 datatype,
   column3 datatype,
   .....
   columnN datatype,
);

基本语法如上所示。

例如,接下来进行演示:

CREATE TABLE student (
  id INTEGER PRIMARY KEY,
  name TEXT
);

这里我们可以使用.tables,该命令用于列出附加数据库中的所有表。

同时这里可以使用.schema 表名得到表的完整信息,其实就是输出创建表的语句。

4.删除表

SQLite 的 DROP TABLE 语句用来删除表定义及其所有相关数据、索引、触发器、约束和该表的权限规范。

例如用来删除刚刚建立的学生表:

DROP TABLE student;

即可删除,你可以通过.tables点命令查看。

5.完整演示

TEu4.jpg

6.附加数据库

假设这样一种情况,当在同一时间有多个数据库可用,您想使用其中的任何一个。SQLite 的 ATTACH DATABASE 语句是用来选择一个特定的数据库,使用该命令后,所有的 SQLite 语句将在附加的数据库下执行。

7.分离数据库

SQLite 的 DETACH DATABASE 语句是用来把命名数据库从一个数据库连接分离和游离出来,连接是之前使用 ATTACH 语句附加的。如果同一个数据库文件已经被附加上多个别名,DETACH 命令将只断开给定名称的连接,而其余的仍然有效。您无法分离 maintemp 数据库。(这两个数据库比较特殊)

8.补充演示

TsRQ.jpg

三.sqlite语句

1.Insert语句

SQLite 的 INSERT INTO 语句用于向数据库的某个表中添加新的数据行。

INSERT INTO 语句有两种基本语法,如下所示:

INSERT INTO TABLE_NAME [(column1, column2, column3,...columnN)]  
VALUES (value1, value2, value3,...valueN);

在这里,column1, column2,…columnN 是要插入数据的表中的列的名称。

2.Select语句

SQLite 的 SELECT 语句用于从 SQLite 数据库表中获取数据,以结果表的形式返回数据。这些结果表也被称为结果集。

SQLite 的 SELECT 语句的基本语法如下:

SELECT column1, column2, columnN FROM table_name;

在这里,column1, column2…是表的字段,他们的值即是您要获取的。如果您想获取所有可用的字段,那么可以使用下面的语法:

SELECT * FROM table_name;

在这里如果只是单纯的输出所有字段,上述命令就足够,但是如果你想要在输出基础上使它更美观输出,可以添加其他命令来实现。

3.演示1

TYPv.jpg

4.update语句

SQLite 的 UPDATE 查询用于修改表中已有的记录。可以使用带有 WHERE 子句的 UPDATE 查询来更新选定行,否则所有的行都会被更新。

带有 WHERE 子句的 UPDATE 查询的基本语法如下:

UPDATE table_name
SET column1 = value1, column2 = value2...., columnN = valueN
WHERE [condition];

5.Delate语句

SQLite 的 DELETE 查询用于删除表中已有的记录。可以使用带有 WHERE 子句的 DELETE 查询来删除选定行,否则所有的记录都会被删除。

带有 WHERE 子句的 DELETE 查询的基本语法如下:

DELETE FROM table_name
WHERE [condition];

6.演示2

Ty7h.jpg

四.sqlite结构

1.运算符

运算符是一个保留字或字符,主要用于 SQLite 语句的 WHERE 子句中执行操作,如比较和算术运算。

运算符用于指定 SQLite 语句中的条件,并在语句中连接多个条件。

  • 算术运算符
  • 比较运算符
  • 逻辑运算符
  • 位运算符

算术运算符就不介绍了,基本都是通用的。

比较运算符:

  1. =:等于号,用于检查两个值是否相等。
  2. <>!=:不等于号,用于检查两个值是否不相等。
  3. <:小于号,用于检查一个值是否小于另一个值。
  4. >:大于号,用于检查一个值是否大于另一个值。
  5. <=:小于等于号,用于检查一个值是否小于或等于另一个值。
  6. >=:大于等于号,用于检查一个值是否大于或等于另一个值。

逻辑运算符:

  1. AND:逻辑与运算,只有当所有条件都满足时才返回真。
  2. OR:逻辑或运算,只要有一个条件满足就返回真。
  3. NOT:逻辑非运算,取反操作,将真变成假,将假变成真。
  4. IN:用于比较一个表达式是否在一组值中,例如:SELECT * FROM my_table WHERE column_name IN (value1, value2, value3);
  5. BETWEEN:用于判断某个值是否在指定的范围内,例如:SELECT * FROM my_table WHERE column_name BETWEEN value1 AND value2;
  6. LIKE:用于模糊匹配,例如:SELECT * FROM my_table WHERE column_name LIKE 'value%';
  7. GLOB:类似于 LIKE,但使用的是 Unix shell 风格的通配符,例如:SELECT * FROM my_table WHERE column_name GLOB 'value*';

位运算符:

  1. &:按位与运算,将两个二进制位的值相与,结果为 1 的位表示两个二进制位上都是 1。
  2. |:按位或运算,将两个二进制位的值相或,结果为 1 的位表示至少有一个二进制位上是 1。
  3. ~:按位取反运算,对二进制数进行取反操作。
  4. <<:左移运算,将二进制数向左移动指定的位数,并在低位补零。
  5. >>:右移运算,将二进制数向右移动指定的位数。

2.sqlite表达式

语法:表达式是一个或多个值、运算符和计算值的SQL函数的组合。

SELECT column1, column2, columnN 
FROM table_name 
WHERE [CONDITION | EXPRESSION];

这里说实话就是一般SELECT语句的条件线性组合即可。

3.演示

TtpC.jpg

五.SQlite子句

1.WHERE子句

SQLite的 WHERE 子句用于指定从一个表或多个表中获取数据的条件。

如果满足给定的条件,即为真(true)时,则从表中返回特定的值。您可以使用 WHERE 子句来过滤记录,只获取需要的记录。WHERE 子句不仅可用在 SELECT 语句中,它也可用在 UPDATE、DELETE 语句中,等等,这些我们将在随后的章节中学习到。

SQLite 的带有 WHERE 子句的 SELECT 语句的基本语法如下:

SELECT column1, column2, columnN 
FROM table_name
WHERE [condition]

2.LIKE子句

SQLite 的 LIKE 运算符是用来匹配通配符指定模式的文本值。如果搜索表达式与模式表达式匹配,LIKE 运算符将返回真(true),也就是 1。这里有两个通配符与 LIKE 运算符一起使用:

  • 百分号 (%)
  • 下划线 (_)

百分号(%)代表零个、一个或多个数字或字符。下划线(_)代表一个单一的数字或字符。这些符号可以被组合使用。

例如:

T2ty.jpg

3.GLOB子句

SQLite 的 GLOB 运算符是用来匹配通配符指定模式的文本值。如果搜索表达式与模式表达式匹配,GLOB 运算符将返回真(true),也就是 1。与 LIKE 运算符不同的是,GLOB 是大小写敏感的,对于下面的通配符,它遵循 UNIX 的语法。

  • 星号 (*)
  • 问号 (?)

星号(*)代表零个、一个或多个数字或字符。问号(?)代表一个单一的数字或字符。

这个子句与LIKE子句的效果一样,只是用的符号不同而已。总体来说,LIKE 子句更适合执行基本的字符串匹配,而 GLOB 子句则更适合实现高级匹配操作。我们学习sqlite只是把它作为工具使用,平时使用LIKE子句即可。

4.LIMIT子句

SQLite 的 LIMIT 子句用于限制由 SELECT 语句返回的数据数量。

下面是 LIMIT 子句与 OFFSET 子句一起使用时的语法:

SELECT column1, column2, columnN 
FROM table_name
LIMIT [no of rows] OFFSET [row num]

SQLite 引擎将返回从OFFSET 的下一行开始直到给定的 LIMIT为止的所有行。

5.其他子句

子句较多,我们就不一一介绍了。

  • ORDER BY 子句是用来基于一个或多个列按升序或降序顺序排列数据;

  • GROUP BY 子句用于与 SELECT 语句一起使用,来对相同的数据进行分组;

  • HAVING 子句允许指定条件来过滤将出现在最终结果中的分组结果;

  • DISTINCT 关键字与 SELECT 语句一起使用,来消除所有重复的记录,并只获取唯一一次记录。

六.说明

这一篇博客是今天学习sqlite的总结,主要是在windows下用命令操作。明天学习C语言链接sqlite和用C语言进行相关操作。

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

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

相关文章

【模板方法设计模式详解】C/Java/JS/Go/Python/TS不同语言实现

简介 模板方法模式&#xff08;Template Method Pattern&#xff09;也叫模板模式&#xff0c;是一种行为型模式。它定义了一个抽象公开类&#xff0c;包含基本的算法骨架&#xff0c;而将一些步骤延迟到子类中&#xff0c;模板方法使得子类可以不改变算法的结构&#xff0c;只…

ToLua框架

ToLua 是一个用于在 Unity 中为 Lua 提供 C# 语言绑定的框架。通过 ToLua&#xff0c;你可以方便地将 C# 代码暴露给 Lua 脚本&#xff0c;并在 Lua 脚本中调用 C# 类、方法和属性。 更新流程 原理&#xff1a;使用AssetBundle进行资源的更新&#xff0c;而由于lua运行时才编…

架构设计-分布式ID

一、 分布式ID基础 1.背景 1.为什么要引用分布式主键ID&#xff1f; 比如单机 MySQL 数据库&#xff0c;前期因为业务量不大&#xff0c;只是使用单个数据库存数据&#xff0c;后期发现业务量一下子就增长&#xff0c;单机 MySQL 已经不能满足于现在的数据量&#xff0c;单机…

【实战项目开发技术分享】常用的ROS工具与命令

常用的ROS工具介绍 作为机器人领域最为流行的开源框架之一,ROS(Robot Operating System)提供了丰富的工具来支持机器人的开发和部署。下面是一些常用的ROS工具及其功能的介绍: roscore:roscore是ROS的主要进程,它启动ROS Master节点并协调ROS系统中的所有进程。所有ROS节…

NEFU数据库基本操作实验总结

前言 SQL语言集数据定义、数据操纵、数据查询、数据控制功能于一体。 数据定义&#xff1a;create&#xff0c;drop&#xff0c;alter 数据操纵&#xff1a;增(insert into … )&#xff0c;删(delete from …)&#xff0c;改(update … set …) 数据查询&#xff1a;select 数…

如何在 Linux 环境下安装使用 pycharm?介绍一种快捷打开方式

之所以要出这个教程&#xff0c;是想介绍一种更快捷的打开方式。官网上的教程&#xff0c;每次打开都要切换到下载地址&#xff0c;然后输入 ./pycharm.sh 才能运行。 如图&#xff0c;在任意位置打开终端&#xff0c;敲快捷键pc就能打开 pycharm 怎么样&#xff0c;非常方便…

MYSQL进阶01

MYSQL进阶 存储引擎存储引擎的特性MyISAMInnoDBMEMORY 如何选择合适的引擎 存储引擎 MYSQL默认支持多种存储引擎&#xff0c;可以根据用户不同需求选择合适的储存引擎。MYSQL支持的存储引擎包括但不局限于以下几种&#xff08;MyISAM、InnoDB、MEMORY、MERGE…&#xff0c;创建…

【Leetcode -142.环形链表Ⅱ -143.重排链表】

Leetcode Leetcode -142.环形链表ⅡLeetcode - 143.重排链表 Leetcode -142.环形链表Ⅱ 题目&#xff1a;给定一个链表的头节点 head &#xff0c;返回链表开始入环的第一个节点。 如果链表无环&#xff0c;则返回 null。 如果链表中有某个节点&#xff0c;可以通过连续跟踪 …

CodeRush Ultimate Crack终极版

CodeRush Ultimate Crack终极版 CodeRush Ultimate通过提高生产力&#xff0c;同时消除侵蚀创造力的重复&#xff0c;帮助开发人员在更短的时间内提供更多高质量的功能。它可以帮助您在几秒钟内创建复杂的代码块&#xff0c;并立即扩展代码模板&#xff0c;并在您按逻辑键入、扩…

[架构之路-179]-《软考-系统分析师》-19- 系统可靠性分析与设计 - 故障模型、可靠性模型、可靠性分析

目录 前言&#xff1a; 1 9 . 1 系统可靠性概述 19.1.1 系统故障模型 1. 在信息系统中&#xff0c;故障或错误有如下儿种表现形式&#xff1a; 2. 故障的缘由 3. 故障模型 &#xff08;1&#xff09;逻辑电路级的故障 &#xff08;2&#xff09; 数据结构级的故障 &a…

spass modeler

课时1&#xff1a;SPSS Modeler 简介 本课时一共分为五个模块&#xff0c;分别是Modeler概述、工具安装、窗口说明以及功能介绍和应用案例。相信通过本课时内容的学习&#xff0c;大家将会对SPSS Modeler有个基础的了解. 在学习本节课内容之前&#xff0c;先来看看本节课我们究…

Wi-Fi (-6) 知识点整理

Wi-Fi - 6 知识点整理 2019年IEEE推出IEEE 802.11ax&#xff0c;WiFi联盟&#xff08;WFA&#xff09;称其为WiFi-6 Wi-Fi (Wireless Fidelity) 无线保真&#xff0c;无线兼容性认证 通信技术 商标 商业认证 技术联盟 Wi-Fi 网络基本要素 接入点&#xff08;Access Point&a…

前端存储二:indexedDB

indexedDB 特点&#xff1a;以域名纬度&#xff0c;浏览器大量结构化数据存储方案&#xff0c;运行在浏览器的非关系型数据库。 大小&#xff1a;不会小于 250MB&#xff0c;支持二进制存储。 接口&#xff1a;异步接口&#xff0c;支持事物机制 这里使用网页脚本生成&#x…

【五一创作】【Simulink】采用延时补偿的三相并网逆变器FCS-MPC

&#x1f449; 【Simulink】基于FCS-MPC的三相并网逆变器控制 上一篇博客介绍了FCS-MPC的基本操作&#xff0c;并且以三相并网逆变器为控制对象进行了Simulink仿真。 但实际仿真中没有考虑补偿延时。本篇博客将讨论为什么要考虑延时并进行补偿&#xff0c;最后对此仿真验证。 …

参会记录|全国多媒体取证暨第二届多媒体智能安全学术研讨会(MAS‘2023)

前言&#xff1a;2023年4月8日上午&#xff0c;我与实验室的诸位伙伴们共聚浙江杭州西子湖畔的六通宾馆&#xff0c;参加了为期一天半的全国多媒体取证暨第二届多媒体智能安全学术研讨会&#xff08;MAS’2023&#xff09;。本届学术研讨会由浙江省自然科学基金委员会资助&…

3.2 静态随机存取存储器

学习目标&#xff1a; 学习静态随机存取存储器&#xff08;SRAM&#xff09;的基本原理、结构和工作方式&#xff0c;理解其与动态随机存取存储器&#xff08;DRAM&#xff09;的区别和优缺点&#xff0c;掌握SRAM的性能参数和应用领域&#xff0c;了解SRAM的发展历程和未来趋…

三元操作 三元操作符 if-else / ? :

Python 三元操作符 if-else &#xff0c; 其他语言三元操操作符 ? : 。 【学习的细节是欢悦的历程】 Python 官网&#xff1a;https://www.python.org/ Free&#xff1a;大咖免费“圣经”教程《 python 完全自学教程》&#xff0c;不仅仅是基础那么简单……地址&#xff1a;h…

【Java】类和对象,封装

目录 1.类和对象的定义 2.关键字new 3.this引用 4.对象的构造及初始化 5.封装 //包的概念 //如何访问 6.static成员 7.代码块 8.对象的打印 1.类和对象的定义 对象&#xff1a;Java中一切皆对象。 类&#xff1a;一般情况下一个Java文件一个类&#xff0c;每一个类…

深度学习的定义和未来发展趋势

深度学习的定义和未来发展趋势 什么是深度学习数学和编程的基础知识深度学习的应用领域深度学习的常见算法和模型训练深度学习模型深度学习的未来 &#x1f3d8;️&#x1f3d8;️个人简介&#xff1a;以山河作礼。 &#x1f396;️&#x1f396;️:Python领域新星创作者&#…