sqlite基础

简介: sqlite基础

一.sqlite基础

1.下载与环境配置

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


您需要下载 sqlite-tools-win32-*.zip 和 sqlite-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.完整演示

4c57fe6ff0b0b169c083bab96dff4267.jpg

6.附加数据库

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

7.分离数据库

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

8.补充演示

455de5414cc1d9b0cdf4b17239cc0fa5.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.演示1b060e403d5a746564cb8748bffdd561c.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.演示26967190c852430d00da6fd20a1913d59.jpg

四.sqlite结构

1.运算符

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

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

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

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

比较运算符:

=:等于号,用于检查两个值是否相等。

<> 或 !=:不等于号,用于检查两个值是否不相等。

<:小于号,用于检查一个值是否小于另一个值。

>:大于号,用于检查一个值是否大于另一个值。

<=:小于等于号,用于检查一个值是否小于或等于另一个值。

>=:大于等于号,用于检查一个值是否大于或等于另一个值。

逻辑运算符:


AND:逻辑与运算,只有当所有条件都满足时才返回真。

OR:逻辑或运算,只要有一个条件满足就返回真。

NOT:逻辑非运算,取反操作,将真变成假,将假变成真。

IN:用于比较一个表达式是否在一组值中,例如:SELECT * FROM my_table WHERE column_name IN (value1, value2, value3);

BETWEEN:用于判断某个值是否在指定的范围内,例如:SELECT * FROM my_table WHERE column_name BETWEEN value1 AND value2;

LIKE:用于模糊匹配,例如:SELECT * FROM my_table WHERE column_name LIKE 'value%';

GLOB:类似于 LIKE,但使用的是 Unix shell 风格的通配符,例如:SELECT * FROM my_table WHERE column_name GLOB 'value*';

位运算符:


&:按位与运算,将两个二进制位的值相与,结果为 1 的位表示两个二进制位上都是 1。

|:按位或运算,将两个二进制位的值相或,结果为 1 的位表示至少有一个二进制位上是 1。

~:按位取反运算,对二进制数进行取反操作。

<<:左移运算,将二进制数向左移动指定的位数,并在低位补零。

>>:右移运算,将二进制数向右移动指定的位数。

2.sqlite表达式

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

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

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

3.演示

d2bcee9d2b4d482d87455aa758dc8198.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 运算符一起使用:


百分号 (%)

下划线 (_)

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

例如:

54ec9bc2b43b75be911fcb44fd8e6db3.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语言进行相关操作。

相关文章
|
18天前
|
存储 SQL 数据库
数据库知识:了解SQLite或其他移动端数据库的使用
【10月更文挑战第22天】本文介绍了SQLite在移动应用开发中的应用,包括其优势、如何在Android中集成SQLite、基本的数据库操作(增删改查)、并发访问和事务处理等。通过示例代码,帮助开发者更好地理解和使用SQLite。此外,还提到了其他移动端数据库的选择。
21 8
|
29天前
|
Web App开发 SQL 数据库
使用 Python 解析火狐浏览器的 SQLite3 数据库
本文介绍如何使用 Python 解析火狐浏览器的 SQLite3 数据库,包括书签、历史记录和下载记录等。通过安装 Python 和 SQLite3,定位火狐数据库文件路径,编写 Python 脚本连接数据库并执行 SQL 查询,最终输出最近访问的网站历史记录。
|
1月前
|
存储 关系型数据库 数据库
轻量级数据库的利器:Python 及其内置 SQLite 简介
轻量级数据库的利器:Python 及其内置 SQLite 简介
|
1月前
|
应用服务中间件 PHP Apache
PbootCMS提示错误信息“未检测到您服务器环境的sqlite3数据库扩展...”
PbootCMS提示错误信息“未检测到您服务器环境的sqlite3数据库扩展...”
|
2月前
|
存储 API 数据库
QML使用Sqlite数据库存储ListModel数据
本文介绍了在QML中使用Sqlite数据库存储ListModel数据的方法,包括如何创建数据库、读取数据、动态添加和删除数据,以及如何在程序启动和退出时与数据库同步数据。
|
2月前
|
数据库 数据库管理
qt对sqlite数据库多线程的操作
本文总结了在Qt中进行SQLite数据库多线程操作时应注意的四个关键问题,包括数据库驱动加载、加锁、数据库的打开与关闭,以及QsqlQuery变量的使用。
135 1
|
29天前
|
存储 缓存 关系型数据库
sqlite 数据库 介绍
sqlite 数据库 介绍
35 0
|
3月前
|
人工智能 小程序 Java
【工具】轻松解锁SQLite数据库,一窥微信聊天记录小秘密
本文介绍了一款名为PyWxDump的开源工具,它可以获取微信账户信息、解密SQLite数据库以查看和备份聊天记录。此工具适用于已登录电脑版微信的用户,通过GitHub下载后简单几步即可操作。适合对数据恢复感兴趣的开发者,但请注意合法合规使用并尊重隐私。
478 2
【工具】轻松解锁SQLite数据库,一窥微信聊天记录小秘密
|
2月前
|
JSON NoSQL 数据库
和SQLite数据库对应的NoSQL数据库:TinyDB的详细使用(python3经典编程案例)
该文章详细介绍了TinyDB这一轻量级NoSQL数据库的使用方法,包括如何在Python3环境中安装、创建数据库、插入数据、查询、更新以及删除记录等操作,并提供了多个编程案例。
107 0
|
3月前
|
关系型数据库 Java MySQL
C#winform中使用SQLite数据库
C#winform中使用SQLite数据库
185 3
C#winform中使用SQLite数据库