我的编程空间,编程开发者的网络收藏夹
学习永远不晚

【MySQL】不就是事务

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

【MySQL】不就是事务

前言

  嗨咯,小伙伴们大家好呀,我已经一个星期没有更新了,实在抱歉!本期我们要学习MySQL初阶中的最后一课,MySQL数据库中的事务也算是近几年面试必考的问题,所以我们一定要认真学习。

 目录

前言

 目录

一、事务的简介

二、事务操作

2.1 查看/设置事务提交方式

 2.2 手动开启事务

2.3 提交事务

2.4 回滚事务 

2.5 案例练习

2.5.1 查看MySQL事务

2.5.2 银行转账模拟练习

2.5.2.1 创建余额表

2.5.2.2 模拟转账流程 李白给杜甫转账1000元 (自动提交事务模式)

2.5.2.3 模拟转账流程 李白给杜甫转账1000元 (手动提交事务模式) 

三、事务的四大特性

四、并发事务问题与事务的隔离级别

4.1 并发事务的问题

4.2 事务的隔离别

 4.3 相关语句

4.3.1 查看事务的隔离界别

4.3.2 设置事务的隔离界别

4.4 实战练习

4.4.1 打开两个客户端进行操作​编辑

4.4.2 查看事务隔离级别

4.4.3 查看当前表中的数据

4.4.4 在另一个客户端进行更新操作

4.4.5 再另一个客户端进行查询操作

4.4.6 设置事务隔离级别为read committed

4.4.7 设置为repeatable read

4.4.8 设置事务的隔离级别为serializable;

五、总结


一、事务的简介

  事务是一组操作的集合,它是一个不可分割的工作单位,事务会把所有的操作作为一个整一起向系统提交或撤销操作请求,即这些操作要么同时成功,要么同时失败。

  普法课堂:法外狂徒”张三“昨天偷了李四5000元存入银行中,张三第二天良心发现犹豫再三决定告诉李四这件事情。李四听了这件事情后决定给张三一个重新做人的机会。只要张三把钱归还给自己,之前的事情既往不咎。张三也在第二天匆匆地赶去银行把自己账户中的5000元通过银行转账归还给李四。张三查了查自己的账户里边有5000元。

  现在我们想一下转账的流程:张三账户-5000元——>李四的账户+5000元。

张三在银行中的确把所偷盗的五千元转给了李四。银行的工作人员说最晚48小时内李四就可以收到,但是时间一转眼过去了一周,李四没有收到张三归还的五千元,李四报了警!

最后因为银行系统出现故障导致李四无法收到转账!最后请问张三构成犯罪吗?这就是我们今天要学习的事务,要么张三银行账户-5000,李四银行账户+5000,要么张三账户不扣钱,李四也不加钱。

注意:默认MvSQL的事务是自动提交的,也就是说,当执行一条DML(insert、update、delete、select)语句,MvSQL会立即隐式的提交事务。

二、事务操作

2.1 查看/设置事务提交方式

select @@autocommit;

 2.2 手动开启事务

start transaction;
begin;

2.3 提交事务

commit;

2.4 回滚事务 

rollback;

2.5 案例练习

2.5.1 查看MySQL事务
select @@autocommit;

   为1表示自动提交,为0表示需要手动提交事务,改为手动之后再提交事务时候必须使用commit,同时也需要自己进行回滚。

2.5.2 银行转账模拟练习
2.5.2.1 创建余额表

表结构如下

create table account(    id    int auto_increment primary key comment '用户id',    name  varchar(10) comment '姓名',    money int comment '余额');

添加数据

insert into account values('001','李白',5000),('002','杜甫',3000),('003','白居易',2500);
2.5.2.2 模拟转账流程 李白给杜甫转账1000元 (自动提交事务模式)

1.查询李白的账户

select * from account where name='李白';

2.李白的账户减去1000

update account set money=money-1000 where name='李白';

3.杜甫的账户增加1000

update account set money=money+1000 where name='杜甫';

4.查询账户表

select * from account;

2.5.2.3 模拟转账流程 李白给杜甫转账1000元 (手动提交事务模式) 

设置MySQL为自动提交事务,设置autocommit为0。

set @@autocommit=0;

开启事务

start transaction;

以下插入数据对数据进行操作的流程同2.5.2.2。

执行出错,要对事务进行回滚。要么全部执行,要么一个也不执行。

n.提交事务

commit;

三、事务的四大特性

原子性:(Atomicity): 事务是不可分割的最小操作单元,要么全部成功,要么全部失败。

一致性:(Consistency):事务完成时,必须使所有的数据都保持一致状态。

隔离性:(lsolation):数据库系统提供的隔离机制,保证事务在不受外部并发操作影响的独立环境下运行。

持久性:(Durability): 事务一旦提交或回滚,它对数据库中的数据的改变就是永久的。

!!!面试的时候容易考

四、并发事务问题与事务的隔离级别

4.1 并发事务的问题

4.2 事务的隔离别

注意: 事物的隔离级别越高,数据越安全,但是性能越低。 需要去权衡数据的安全性和并发性,进行设置事物的隔离级别。

 4.3 相关语句

4.3.1 查看事务的隔离界别

select @transaction_isolation;

4.3.2 设置事务的隔离界别

set[session/global] transaction isolation level [read uncommitted | read committed |repeatable read |serializable];

4.4 实战练习

4.4.1 打开两个客户端进行操作

4.4.2 查看事务隔离级别
select @@transaction_isolation;

事务的隔离级别为默认值.

set session transaction isolation level read uncommitted;
4.4.3 查看当前表中的数据

4.4.4 在另一个客户端进行更新操作
set session transaction isolation level read uncommitted;
4.4.5 再另一个客户端进行查询操作

因为另一个客户端没有进行commit提交操作所以出现脏读。

4.4.6 设置事务隔离级别为read committed
set session transaction isolation level read committed;

提交事务之前于提交事务之后查询的李白的money不相同出现了不可重复读。

4.4.7 设置为repeatable read
set session transaction isolation level repeatable read;

在一个客户端查询id=4是否存在

select * from account where id='4';

在另一个客户端插入一条数据

select * from account where id='4';

在第一个客户端插入数据出现错误,但是查询id=4的仍然为空

select * from account where id='4';

出现幻读现象

4.4.8 设置事务的隔离级别为serializable;

当一个事务提交之后完毕之后另一个事务才开始执行,规避了幻读的问题

注意:事务的隔离级别越高,数据越安全,但是性能越低。

五、总结

在过去的一段时间里,我一直与大家分享关于MySQL数据库的知识和经验。我希望这些博文能够帮助你们更好地理解和应用MySQL,提升你们在数据库领域的技能。 然而,我认为现在是时候告别了。

我已经完成了初级阶段的博文学习,我相信你们已经掌握了一些基本的MySQL知识,并能够应用到实际项目中。 在这个阶段结束之际,我想向你们表达我的感激之情。感谢你们一直以来的支持和鼓励,是你们的反馈和建议让我不断进步。我也希望你们能够继续保持学习的热情,不断提升自己的技能。

如果你们还有任何关于MySQL数据库的问题,可以随时在评论区留言,我会尽力回答。同时,我也鼓励你们互相交流和分享,共同进步。 最后,我想再次感谢你们的支持和陪伴。希望我们能够在其他的学习领域再次相遇。 再见!

来源地址:https://blog.csdn.net/m0_64857213/article/details/131479270

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

【MySQL】不就是事务

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

MySQL索引是啥?不懂就问

目录概述从二叉树到B+树聚集索引非聚集索引联合索引和覆盖索引B+树索引VS哈希索引普通索引和唯一索引InnoDB VS MyISAM用explain分析索引使用总结概述 以下是需要创建索引的常见场景,为了对比,创建测试表(a带索引、d无索引
2022-05-20

线上学习就业两不误,这套Python教程学完高薪就业不是事!

总有同学问,等疫情结束我在考虑转行到千锋培训来得及吗?对于这样的同学,我们想说,你现在手里的2W块钱,疫情结束后还是2W块钱,而对于千锋学员来说,他们的积蓄随着时间,会变成4W、6W、8W…越来越多!不信你看,在疫情时期凭借一技之长,那个收
2023-06-02

javascript是不是就是js

小编给大家分享一下javascript是不是就是js,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!JavaScript有什么特点1、js属于一种解释性脚本语言;2
2023-06-14

云服务器是不是就是云电脑

云服务器是一种通过互联网连接服务器的云计算服务。云服务器通常是一种专门的虚拟硬件设备,通过互联网与服务器相连,为用户提供高速网络连接、存储空间和处理能力。云服务器是一种服务,用户可以租用或购买云服务器来满足自己的业务需求。云服务器通常是按需服务,可以根据用户需求动态扩展或缩减容量。与传统的IT硬件设备不同,云服务器通常不需要专业的技术支持和维护,用户只需要购买和安装相关的软件和服务即可。因此
2023-10-26

云服务器就是不用买电脑了吗为什么呢怎么回事

云服务器是一种提供高可靠性、可扩展性和灵活性的云计算服务,通常用于企业中的数据中心、数据中心托管、数据中心租用和混合云模式等。相比传统的购买电脑,使用云服务器可以极大地降低成本,因为不需要购买传统的电脑,也可以将其用于虚拟化、存储和其他高价值的计算任务。此外,云服务器具有更低的运营成本和更高的可靠性,因为它们只需要很少的维护和管理工作。云服务器的使用方式非常灵活,例如可以将其部署在公有云、私有云和专有云等...
2023-10-26

云服务器就是不用买电脑了嘛为什么呢怎么回事

云服务器是一种提供存储和计算服务的技术,它通过互联网连接到公共云平台上,用户无需购买个人电脑即可获得所需的存储和计算服务,并使用公共云平台的服务。云服务器使用的是多台服务器来处理数据,而不是单个的计算机,因此它的性能要比普通的个人计算机要高出许多。此外,用户不需要购买个人电脑也能使用云服务器,这意味着它的成本更低。因此,云服务器是不需要购买硬件的,只需要在云平台上安装各种应用即可获得所需的服务。它是基于互联...
2023-10-26

什么是mysql事务

MySQL事务是一组数据库操作的逻辑单元,提供了一种保证数据一致性和完整性的机制,具有以下四个特性:1、原子性,事务中的所有操作被视为一个原子单元,要么全部执行成功,要么全部失败回滚;2、一致性,务开始之前和结束之后,数据库的状态必须保持一
2023-07-28

云服务器就是不用买电脑了

云服务器就是一种虚拟服务器,可以为用户提供高性能的计算服务,而不需要购买物理服务器。云服务器的特点是使用云服务,无需购买硬件设备和服务器,可以根据需要使用云服务商提供的资源,包括硬盘存储、网络带宽、软件应用等,从而实现更高效率的计算和存储服务。对于那些不需要传统服务器的企业和应用,云服务器就是一个更高效的选择。它不仅可以节省购买硬件成本,还可以减少维护成本和时间,提高生产力和效率。
2023-10-26

mysql总是安装不上是怎么回事

mysql 安装失败可能由权限不足、端口冲突、防火墙阻止、软件冲突、硬件不兼容、损坏的安装文件、系统错误或缺少依赖项等原因引起,建议检查权限、查找端口冲突、安装依赖项,如以上步骤无效,重新下载安装文件重试。MySQL 安装失败的原因MyS
mysql总是安装不上是怎么回事
2024-04-14

云服务器就是不用买电脑了吧

云服务器是一种提供服务器托管和带宽存储的服务,可以让用户在本地计算机上轻松实现数据存储和处理。如果不需要购买服务器或存储空间,你可以租用云服务器。以下是一些常见的云服务器租用服务,你可以根据自己的需求进行选择:GoogleCloud:这是一家国外云服务器租用服务提供商,为全球用户提供高性能服务器。该服务提供了一个虚拟机,允许用户在虚拟机上运行GoogleApps应用程序。价格根据服务类型和地
2023-10-26

云服务器就是不用买电脑了吗

云服务器不一定需要购买,只要你有相应的技术和资源,就可以使用云服务器。以IaaS云服务为例,许多云服务提供商向用户提供按月计费或按年计费的云服务器租用服务,而不是购买。用户可以根据自己的需求选择合适的云服务器,例如弹性计算、容错容灾、云硬盘、数据备份等服务。如果你是租用云服务器,则需要确保自己有足够的带宽和存储空间,并且需要了解服务提供商的相关使用条款和条件。此外,不同的云服务器提供商可能
2023-10-26

云服务器就是不用买电脑了嘛

云服务器是一种提供按需服务的虚拟计算资源,它可以通过互联网连接到服务器,并通过服务器集群来提供强大的计算和存储能力。它并不是必须购买的硬件设备,但是可以根据自己的需求和使用情况选择合适的云服务器。如果你只是需要按需使用计算资源,你可以选择使用公共云服务,例如AmazonWebServices、GoogleCloud和其他公共云服务。这些服务通常具有较低的使用费用和较高的可用性,并且它们可以根据
2023-10-26

编程热搜

目录