事务与存储过程

通过DESC 表名 可以查看表的结构
通过SELECT * FROM 表名 查看表数据

1、事务概念,开启,提交和回滚事务

事务处理机制,能够保证在同一事务中操作具有同步性。
事务:就是针对数据库的一组操作,它可以由一条或者多条SQL语句组成,同一个事务的操作具备同步的特点,若其中一条语句无法执行,所有的语句将不会执行。
创建表
b用户向a用户转账100;
在这里插入图片描述
在这里插入图片描述
**需要提交COMMIT;**否则数据库再次登录,将没有转账完成。

回滚事务:针对事务还没有提交,此时,利用ROLLBACK可以取消事务
ROLLBACK

2、事务的四种隔离级别

1、脏读
b向a转账在这里插入图片描述
在另一窗口查询


设置隔离级别进行脏读演示,a向b转账,先设置b的隔离级别为读取未提交。
对于MySQL默认的隔离级别为可重复读,REPEATABLE READ,该级别是可以避免脏读,因此需要设置为READ UNCOMMITTED(读未提交的)
(a)在b账户中设置级别
重新设置隔离级别

(b)在b账户中开启一个事务,查询余额信息
在这里插入图片描述
©打开另一个事务,窗口,在账户a中进行转账
在这里插入图片描述
(d)在账户b中看,查看余额信息
余额信息改变
————————————————————————
重新设置账户b的隔离级别,read committed
“重新打开窗口
mysql -u root -p
123456
use chapter06
”“”
read committed
—a账户,重新转账
update acount set money=money-100 WHERE name=‘a’;
update acount set money=money+100 WHERE name=‘b’;
如下b账户
在这里插入图片描述
如下为a账户
在这里插入图片描述
(2)不可重复读
事务中两次查询结果不一致,在查询过程中其他事务做了更新操作
脏读是读取前一个事务未提交的脏数据
不可重复度实在事务中重复读取了别的线程已经提交数据
a向b转账,设置b的隔离级别为 REPEATABLE READ,这样在a中操作转账后,b中的结果保持一致,前后查询

(3)幻读( REPEATABLE READ可以避免幻读)
它是指在一个事物内两次查询中数据条数不一致,同样是两次查询过程,但是幻读是由于其他事务做了插入记录的操作,导致记录数有所增加。
可以重新设置b的级别为READ COMMITTED
(4)可串行化

3、创建存储过程

  由于在开发中,经常用到重复使用某一功能的情况,引入了存储过程;存储过程就是将一条或者多条SQL语句的集合,当对数据库进行一系列复杂操作是,存储过程可以将这写复杂操作封装成一个代码块,以便重复使用。
  创建存储过程用到的变量,光标,流程控制等。
 (1)创建存储过程
 (2)变量的使用
 (3)定义条件和处理程序
 (4)光标的使用
 (5)流程控制的使用    

4、存储过程的使用
调用,查看,修改和删除存储过程

  实例:存储过程的应用
  1、创建一个stu表
  2、创建一个存储过程
  3、调用存储过程

创建存储过程能够获取表stu中的记录数和id之和
存储过程创建 使用存储过程

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值