SQLite 事务处理 | 学习笔记

简介: 快速学习 SQLite 事务处理

开发者学堂课程【嵌入式之 RFID 开发与应用2020版:SQLite 事务处理】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/665/detail/11228


SQLite 事务处理

内容介绍:

一、事务

二、练习

 

一、事务

事务是一个完整的处理流程,对于 SQL 语句来说,插入、删除、创建每一条单独的指令都是一个事务,如果希望将多条语句合成一个事务可以使用 begin。

事务( Transaction )可以使用 BEGINTRANSACTION 命令或简单的 BEGIN 命令来启动。此类事务通常会持续执行下去,直到遇到下一个 COMMIT 或 ROLLBACK 命令。不过在数据库关闭或发生错误时,事务处理也会回滚。

以下是启动一个事务的简单语法:

在 SQLite 中,默认情况下,每条 SQL 语句自成事务。

begin:开始一个事务,之后的所有操作都可以取消

commit: 使 begin 后的所有命令得到确认。

rollback: 取消 begin 后的所有操作。

Begin 到 commit 之间的操作时放在内存中的,只有遇到 commit 时才会写入磁盘,好处是防止中间存在错误,给与后悔的可能,如要后悔,执行 rollback。

例: sqlite->begin;

salite->delete from persons:

演示:sqlite>begin;

sqlite> delete from tbl;

sqlite>select *from tbl;

sqlite>select *from tbl;

删除后面如果不加条件就会删除全部内容。

sqlite>rollback;

sqlite>select *from tbl;

id     name    addr

----   --------  -------

101     zs      bj

102     ls       tj

103     ww     sh

104     zs       cd

105     sw      cq

106      xl       hb

sqlite>

执行 rollback,删除的数据就回来了。

下面要执行 commit 操作:

sqlite>begin;

sqlite> update tbl set name= ' xh 'where id=106;

sqlite> select *from tbl;

id     name    addr

----   --------  -------

101     zs      bj

102     ls       tj

103     ww     sh

104     zs       cd

105     sw      cq

106      xh       hb

如果 update 不加条件,那么所有 name 都会改成“xh”

sqlite>commit;

sqlite> select *from tbl;

id     name    addr

----   --------  -------

101     zs      bj

102     ls       tj

103     ww     sh

104     zs       cd

105     sw      cq

106      xh       hb

 

二、练习

练习_1

1、把前边 SQL 语句练习一下,从表的创建到表中数据等基本操作掌握熟练。

练习_2

1、创建一张表,表名为: persons, 表的格式为( Id mteger prmary key, nane tieAl, auu Ical) boeenl,为主键

2、使用事务在表中插入5个人的信息,设置各个人的信息不一样

3、查看插入5个人的信息是否正确,正确结束事务否则修改

4、修改 id=1 的学生信息 name='coolboy', score=87;

5、通过查询语句查看 id=1 的学生信息是否修改正确

6、查看分数 score >=87 学生的名字 name

7、删除 id=2 的学生全部信息

8、查看 id=3 和 id=4 学生的分数

9、查看 id=1 并且 score=87 的学生信息

10、查看分数在 80 至 100 之间的学生姓名

11、查看名字 name 中有 'cool’字符串的学生信息

12、查看 id 不等于 1 的所有学生的信息

13、按分数从小到大排序,将学生信息打印出来

14、按 id 号,从大到小,将学生信息打印出来

很多时候指令会有一些出入,拿之前的主键为例,有时就不起作用,这时需要查看此数据库是否支持此指令或者查看帮助信息。

练习_2参考表

Id

Name

addr

score

1

Lucy

beijing

70

2

Peter

Tianjing

95

3

Bob

Hebei

80

4

Mary

Hunan

91

5

james

America

65

相关文章
|
6天前
|
存储 API 数据库
QML使用Sqlite数据库存储ListModel数据
本文介绍了在QML中使用Sqlite数据库存储ListModel数据的方法,包括如何创建数据库、读取数据、动态添加和删除数据,以及如何在程序启动和退出时与数据库同步数据。
|
6天前
|
数据库 数据库管理
qt对sqlite数据库多线程的操作
本文总结了在Qt中进行SQLite数据库多线程操作时应注意的四个关键问题,包括数据库驱动加载、加锁、数据库的打开与关闭,以及QsqlQuery变量的使用。
|
8天前
|
SQL 关系型数据库 MySQL
php学习笔记-连接操作mysq数据库(基础)-day08
本文介绍了PHP中连接操作MySQL数据库的常用函数,包括连接服务器、设置字符集、关闭连接、选择数据库、结果集释放、获取影响行数以及遍历结果集等操作。通过书籍查询的实例演示了如何使用这些函数进行数据库操作,并提供了一个PHP操纵MySQL数据库的模板。
php学习笔记-连接操作mysq数据库(基础)-day08
|
2月前
|
人工智能 小程序 Java
【工具】轻松解锁SQLite数据库,一窥微信聊天记录小秘密
本文介绍了一款名为PyWxDump的开源工具,它可以获取微信账户信息、解密SQLite数据库以查看和备份聊天记录。此工具适用于已登录电脑版微信的用户,通过GitHub下载后简单几步即可操作。适合对数据恢复感兴趣的开发者,但请注意合法合规使用并尊重隐私。
204 2
【工具】轻松解锁SQLite数据库,一窥微信聊天记录小秘密
|
8天前
|
SQL 数据库 数据库管理
SQLite 创建数据库
SQLite 的 sqlite3 命令被用来创建新的 SQLite 数据库。您不需要任何特殊的权限即可创建一个数据。
13 0
|
10天前
|
JSON NoSQL 数据库
和SQLite数据库对应的NoSQL数据库:TinyDB的详细使用(python3经典编程案例)
该文章详细介绍了TinyDB这一轻量级NoSQL数据库的使用方法,包括如何在Python3环境中安装、创建数据库、插入数据、查询、更新以及删除记录等操作,并提供了多个编程案例。
23 0
|
2月前
|
SQL druid Java
Java数据库部分(MySQL+JDBC)(二、JDBC超详细学习笔记)(下)
Java数据库部分(MySQL+JDBC)(二、JDBC超详细学习笔记)
49 3
Java数据库部分(MySQL+JDBC)(二、JDBC超详细学习笔记)(下)
|
2月前
|
SQL Java 关系型数据库
Java数据库部分(MySQL+JDBC)(二、JDBC超详细学习笔记)(上)
Java数据库部分(MySQL+JDBC)(二、JDBC超详细学习笔记)
69 3
Java数据库部分(MySQL+JDBC)(二、JDBC超详细学习笔记)(上)
|
2月前
|
SQL 存储 小程序
【教程】navicat配合HTTP通道远程连接SQLite数据库
本文介绍了如何通过 Navicat Premium 工具配合 n_tunnel_sqlite.php 和 HTTP 通道远程连接服务器上的 SQLite 数据库。SQLite 是一种自给自足的、无服务器的 SQL 数据库引擎,由于其端口未对外开放,直接使用 Navicat 进行远程连接不可行。文章详细记录了使用 HTTP 通道实现远程连接的过程,包括定位本地 `ntunnel_sqlite.php` 文件,将其上传至服务器,并通过 Navicat 配置 HTTP 通道连接 SQLite 数据库的具体步骤。
52 0
【教程】navicat配合HTTP通道远程连接SQLite数据库
|
2月前
|
关系型数据库 Java MySQL
C#winform中使用SQLite数据库
C#winform中使用SQLite数据库
65 3
C#winform中使用SQLite数据库
下一篇
无影云桌面