MySQL基础学习第十一课(事务方法的使用)

实验作业(事务)

 

开启事务:start transaction;

提交事务:commit;

回滚事务:rollback;

以实验作业进行讲解:

进入mysql服务器中,首先执行“drop database if exists three”语句,以此确保打开的mysql中没有数据库three。

1.创建名为three的数据库。

例题:使用数据库three并按以下要求创建数据表account。

字段id:设置数据类型int(11)、主键约束(primary key)、字段值自动增加(auto_increment);

字段name:设置数据类型varchar(40);

字段money:设置数据类型float;

操作如下:

代码为:create table account(id int(11) primary key auto_increment,name varchar(40),money float);

向account数据表添加如下数据:

2.事务管理

事务的概念:现实生活中,人们经常会进行转账操作,转账可以分为两部分来完成,转入和转出,只有这两个部分都完成才认为转账成功,在数据库中,这个过程是使用两条语句来完成的,如果其中任意一条语句出现异常没有执行,则会导致两个账户的金额不同步,造成错误。

为了防止上述情况的发生,mysql中引入了“事务”,所谓事务就是针对数据库的一组操作,它可以有一条或多条sql语句组成,同一个事务的操作具备同步的特点,如果其中有一条语句无法执行,那么所有的语句都不会执行,也就是说,事务中的语句要么都执行,要么都不执行。

回滚事务说明:如果不想提交当前事务,通过rollback命令,取消事务,需要注意的是rollback语句命令只能针对未提交的事务执行回滚操作,已提交的事务是不能回滚的。

例题: a账户向b账户转账200元(创建事务),查询b账户余额信息记录。

代码为:start transaction;

update account set money=money+200 where name='b';

update account set money=money-200 where name='a';

commit;

 

  1. 练习题: 新增账户c,并在c账户中存入2000元,c账户向b账户转账1000元(创建事务)。

代码为:insert into account(id,name,money) values(3,'c',2000);

start transaction;

update account set money=money+1000 where name='b';

update account set money=money-1000 where name='c';

commit;

 

  1. 练习题:查询账户余额最少和最多的账户信息(提示:使用聚合函数)。

最少代码为:select id,name,min(money) from account;

最多代码为:select id,name,max(money) from account;

 

  1. 练习题:最多余额的账户向最少余额的账户转账100元(创建事务)。

代码为:start transaction;

update account set money=money+100 where name='a';

update account set money=money-100 where name='b';

commit;

 

例题:陈宁(a账户)在某购物网站上订购了10个杯子(每个5元),合计50。之后通过转账的方式向商家(b账户)支付货款,但是在支付的时候多输入了一个零,幸好及时发现后马上撤销,避免了经济损失(创建事务演示撤销转账过程)。

撤销代码为:start transaction;

update account set money=money+500 where name='b';

rollback;

 

  1. 简答题(简述事务的四个特性)

(1)原子性:

(2)一致性:

(3)隔离性:

(4)持久性:

11、简答题(简述事务的隔离级别)

(1)read uncommitted(读未提交):

(2)read committed(读提交):

(3)repeatable read(可重复读):

(4)serializable(可串行化):

事务的其他知识点:

设置事务隔离级别语法格式:

Set session transaction isolation level 隔离级别;

查询事务隔离级别语法格式:

Select @@tx_isolation;_

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值