mysql数据库学习总结

数据库难点:事务

事务是由一组sql语句组成的执行单元,这些sql之间一般都互相依赖。
如A给B转账
1.update 表 set money = money-1000 where id=1
2.update 表 set money = money+1000 where id=2
以上两句sql组成了一个转账的事务。一个事务要么全部执行,要么全部不执行。
事务的特性ACID
Atomicity原子性
事务是最小的执行单元,要么全部执行,要么全部不执行。
Consistency一致性
事务执行前后,必须让所有数据保持一致状态。(总体数据守恒)
create view 视图名 as
查询的sql语句;
select * from 视图名;
drop view 视图名;
Isolation隔离性
多个事务并发执行时应该互相隔离,互不影响。
Durability持久性
事务一旦提交,对数据的改变是永久的。

手动提交/回滚事务
1.关闭事务自动提交:set @@autocommit=0
2.开启事务:start transaction
3.事务要执行的sql
4.没有提交之前,可以使用rollback回滚
5.如果要提交,使用commit,一旦提交成功,无法rollback

事务并发可能出现的问题:脏读、不可重复读、幻读

脏读:事务A读取到了事务B未提交的数据

不可重复读:事务A中如果要读取两次数据,在这期间,事务B对数据进行了修改并提交,导致事务A读取两次的情况不一致

幻读:事务A读取id为1-10之间的数据,假如只有id为2和5的数据,在读取期间,事务B添加了
一条id为3的数据,导致事务A多读取到了事务B中的数据。

事务的隔离级别:

read uncommitted:会出现脏读、会出现不可重复读、会出现幻读

read committed:不会出现脏读、会出现不可重复读、会出现幻读

repeatable read:不会出现脏读、不会出现不可重复读、会出现幻读

serializable:不会出现脏读、不会出现不可重复读、不会出现幻读。

查看事务隔离级别:select @@transaction_isolation

设置事务隔离级别:set [session|global] transaction isolation level [Read Uncommitted|Read
Committed|Repeatable Read|Serializable]

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值