开发者学堂课程【嵌入式之 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 |