MySQL第十三次作业-事务管理

1、创建一个名为chapter06的数据库
在这里插入图片描述

2、使用chapter06数据库
MySQL第十三次作业-事务管理_第1张图片

3、创建一个名为account的表
MySQL第十三次作业-事务管理_第2张图片

create table account(
-> id int primary key auto_increment,
-> name varchar(40),
-> money float
-> );
在这里插入图片描述

4、往表中插入数据
insert into account(name,money) values
-> (‘a’,1000),
-> (‘b’,1000);
MySQL第十三次作业-事务管理_第3张图片

5、查询表中数据
在这里插入图片描述

MySQL第十三次作业-事务管理_第4张图片

6、开启一个事务然后通过update语句将a账户的100元钱转给b用户,最后提交事务。
MySQL第十三次作业-事务管理_第5张图片
start transaction;
update account set money=money-100 where name = ‘a’;
update account set money=money+100 where name = ‘b’;
commit;
MySQL第十三次作业-事务管理_第6张图片

7、查询表中余额
select * from account;
MySQL第十三次作业-事务管理_第7张图片

8、开启一个事务然后通过update语句将b账户的100元钱转给a用户
在这里插入图片描述

start transaction;
update account set money=money+100 where name = ‘a’;
update account set money=money-100 where name = ‘b’;

MySQL第十三次作业-事务管理_第8张图片

9、再查询表中余额
select * from account;
MySQL第十三次作业-事务管理_第9张图片

10、先退出MySQL数据库,再登录MySQL数据库,然后再使用chapter06数据库,在查询余额
MySQL第十三次作业-事务管理_第10张图片

11、开启一个事务然后通过update语句将b账户的100元钱转给a用户,然后使用commit语句来提交事务。
在这里插入图片描述
start transaction;
update account set money = money +100 where name =‘a’;
update account set money = money -100 where name =‘b’;
commit;
MySQL第十三次作业-事务管理_第11张图片

12、重新登录数据库然后再查询余额
在这里插入图片描述MySQL第十三次作业-事务管理_第12张图片

13、开启一个事务,通过update语句将a账户的100元钱转给b账户。
start transaction;
update account set money = money -100 where name =‘a’;
update account set money = money +100 where name =‘b’;
MySQL第十三次作业-事务管理_第13张图片

14、然后查询A、B账户的金额;
select * from account;
MySQL第十三次作业-事务管理_第14张图片

15、从查询结果可以看出,a账户的100元钱转给b账户了,但是事务还没有提交,我们还可以执行事务回滚,操作如下:
在这里插入图片描述
rollback;
在这里插入图片描述

16、查询A、B账户的余额
在这里插入图片描述

select * from account;
MySQL第十三次作业-事务管理_第15张图片

17、将b账户的隔离级别改为read uncommitted;
MySQL第十三次作业-事务管理_第16张图片

set session transaction isolation level read uncommitted;
在这里插入图片描述

18、设置b账户事务隔离级别:
在这里插入图片描述

select @@transaction_isolation;
MySQL第十三次作业-事务管理_第17张图片

19、演示脏读:
在这里插入图片描述
start transaction;
select * from account;
MySQL第十三次作业-事务管理_第18张图片

20、在a账户中开启一个事务,并在当前窗口中执行转账功能,但不提交事务。
在这里插入图片描述
start transaction;
update account set money = money - 100 where name =‘a’;
update account set money = money + 100 where name =‘b’;

MySQL第十三次作业-事务管理_第19张图片

21、然后再查询余额信息
select * from account;
MySQL第十三次作业-事务管理_第20张图片

22、将上一步开启的事务进行回滚
在这里插入图片描述
rollback;
select * from account;
MySQL第十三次作业-事务管理_第21张图片

23、设置b账户中事务的隔离级别
在这里插入图片描述
set session transaction isolation level read committed;

在这里插入图片描述

24、验证是否出现脏读:
在这里插入图片描述
start transaction;
select * from account;
MySQL第十三次作业-事务管理_第22张图片

25、在a账户中开启一个事务,并在该事务中实现转账功能
在这里插入图片描述
start transaction;
update account set money = money -100 where name = ‘a’;
update account set money = money +100 where name = ‘b’;

MySQL第十三次作业-事务管理_第23张图片

26、再次查询各账户的余额信息。
在这里插入图片描述
select * from account;
MySQL第十三次作业-事务管理_第24张图片

27、演示不可重复读
在这里插入图片描述
start transaction;
select * from account;
MySQL第十三次作业-事务管理_第25张图片

28、在a账户中不用开启事务,直接使用update语句执行更新操作即可
在这里插入图片描述
update account set money = money -100 where name = ‘a’;
在这里插入图片描述

29、查询a账户的余额
在这里插入图片描述
select * from account;
MySQL第十三次作业-事务管理_第26张图片

30、当a账户的更新语句完成后,查询b账户的余额
在这里插入图片描述
select * from account;
MySQL第十三次作业-事务管理_第27张图片

31、设置b账户中事务的隔离级别
MySQL第十三次作业-事务管理_第28张图片
set session transaction isolation level repeatable read;
MySQL第十三次作业-事务管理_第29张图片

32、验证是否出现不可重复读
MySQL第十三次作业-事务管理_第30张图片
start transaction;
select * from account;
MySQL第十三次作业-事务管理_第31张图片

33、幻读
在这里插入图片描述
set session transaction isolation level read committed;
MySQL第十三次作业-事务管理_第32张图片

34、演示幻读
MySQL第十三次作业-事务管理_第33张图片
start transaction;
select * from account;
MySQL第十三次作业-事务管理_第34张图片
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
insert into account(name,money) values(‘c’,1000);
在这里插入图片描述

在这里插入图片描述
select * from account;
MySQL第十三次作业-事务管理_第35张图片

MySQL第十三次作业-事务管理_第36张图片
set session transaction isolation level repeatable read;
在这里插入图片描述

35、验证是否出现幻读
MySQL第十三次作业-事务管理_第37张图片
start transaction;
select * from account;
MySQL第十三次作业-事务管理_第38张图片
在这里插入图片描述
select * from account;
在这里插入图片描述

在这里插入图片描述
MySQL第十三次作业-事务管理_第39张图片
在这里插入图片描述
select * from account;
MySQL第十三次作业-事务管理_第40张图片

36、可串行化
MySQL第十三次作业-事务管理_第41张图片
在这里插入图片描述
start transaction;
select * from account;
MySQL第十三次作业-事务管理_第42张图片

37、演示可串行化
MySQL第十三次作业-事务管理_第43张图片
start transaction;
select * from account;
MySQL第十三次作业-事务管理_第44张图片

在这里插入图片描述
start transaction;
在这里插入图片描述

MySQL第十三次作业-事务管理_第45张图片
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
MySQL第十三次作业-事务管理_第46张图片
在这里插入图片描述

你可能感兴趣的:(mysql,数据库,database)