返回顶部
首页 > 资讯 > 数据库 >【MySQL】不就是事务
  • 936
分享到

【MySQL】不就是事务

mysql数据库sql 2023-08-31 19:08:58 936人浏览 泡泡鱼
摘要

前言   嗨咯,小伙伴们大家好呀,我已经一个星期没有更新了,实在抱歉!本期我们要学习Mysql初阶中的最后一课,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

您可能感兴趣的文档:

--结束END--

本文标题: 【MySQL】不就是事务

本文链接: https://lsjlt.com/news/386769.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 【MySQL】不就是事务
    前言   嗨咯,小伙伴们大家好呀,我已经一个星期没有更新了,实在抱歉!本期我们要学习MySQL初阶中的最后一课,MySQL数据库中的事务也算是近几年面试必考的问题,所以我们一定要认真学习。  目录 前言  目录 一、事务的简介 二、...
    99+
    2023-08-31
    mysql 数据库 sql
  • [MySQL]不就是SQL语句
    前言   本期主要的学习目标是SQl语句中的DDL和DML实现对数据库的操作和增删改功能,学习完本章节之后需要对SQL语句手到擒来。 1.SQL语句基本介绍  SQL(Structured Query Language)是一种...
    99+
    2023-09-12
    sql mysql 数据库
  • 【MySQL】不就是子查询
    前言 今天我们来学习多表查询的下一个模块——子查询,子查询包括了标量子查询、列子查询、行子查询、表子查询,话不多说我们开始学习。  目录 前言  目录 一、子查询 1. 子查询的概念 2. 子查询语法格式  2.1 根据子查询结果不...
    99+
    2023-09-01
    数据库 sql mysql
  • 【MySQL】不就是多表查询
    前言   嗨!小伙伴们大家好呀,忙碌的一周就要开始!在此之前我们学习的MySQL数据库的各种操作都是在一张表之中,今天我们学习要对多张表进行相关操作,相比较于单一的表来说,多张表操作相对复杂一些,我相信只要认真学习多表查询也不再话下! ...
    99+
    2023-09-02
    mysql 数据库
  • MySQL索引是啥?不懂就问
    目录概述从二叉树到B+树聚集索引非聚集索引联合索引和覆盖索引B+树索引VS哈希索引普通索引和唯一索引InnoDB VS MyISAM用explain分析索引使用总结概述 以下是需要创建索引的常见场景,为了对比,创建测...
    99+
    2022-05-20
    MySQL MySQL索引
  • MySQL索引的理解学习,面试不问索引原理就是事务原理
    目录 MySQL执行SQL的整体流程 引言, MySQL索引底层学习原因 磁盘介绍(理解磁盘IO) 索引底层数据结构B+树 B+树(聚集索引) B+树(辅助索引) 思考一下为何使用B+树结构, 不是B树, 不是平衡树二叉树,红黑树? 索引总...
    99+
    2023-09-28
    面试 学习 mysql 索引
  • javascript是不是就是js
    小编给大家分享一下javascript是不是就是js,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!JavaScript有什么特点1、js属于一种解释性脚本语言;2...
    99+
    2023-06-14
  • MySQL事务(transaction)看这篇就足够了
    目录mysql事务处理(TransAction)一、事务的四个特性(ACID)【面试常考项】二、事务的分类三、开启事务的步骤四、事务并发时出现的问题五、事务的隔离级别总结MySQL事务处理(TransAction) 思考...
    99+
    2024-04-02
  • 线上学习就业两不误,这套Python教程学完高薪就业不是事!
    总有同学问,等疫情结束我在考虑转行到千锋培训来得及吗?对于这样的同学,我们想说,你现在手里的2W块钱,疫情结束后还是2W块钱,而对于千锋学员来说,他们的积蓄随着时间,会变成4W、6W、8W…越来越多!不信你看,在疫情时期凭借一技之长,那个收...
    99+
    2023-06-02
  • 云服务器是不是就是云电脑
    云服务器是一种通过互联网连接服务器的云计算服务。云服务器通常是一种专门的虚拟硬件设备,通过互联网与服务器相连,为用户提供高速网络连接、存储空间和处理能力。 云服务器是一种服务,用户可以租用或购买云服务器来满足自己的业务需求。云服务器通常是...
    99+
    2023-10-26
    服务器 电脑
  • 云服务器就是不用买电脑了嘛为什么呢怎么回事
    云服务器是一种提供存储和计算服务的技术,它通过互联网连接到公共云平台上,用户无需购买个人电脑即可获得所需的存储和计算服务,并使用公共云平台的服务。 云服务器使用的是多台服务器来处理数据,而不是单个的计算机,因此它的性能要比普通的个人计算机...
    99+
    2023-10-26
    什么呢 怎么回事 买电脑
  • 云服务器就是不用买电脑了吗为什么呢怎么回事
    云服务器是一种提供高可靠性、可扩展性和灵活性的云计算服务,通常用于企业中的数据中心、数据中心托管、数据中心租用和混合云模式等。 相比传统的购买电脑,使用云服务器可以极大地降低成本,因为不需要购买传统的电脑,也可以将其用于虚拟化、存储和其他...
    99+
    2023-10-26
    什么呢 怎么回事 买电脑
  • 云服务器就是不用买电脑了
    云服务器就是一种虚拟服务器,可以为用户提供高性能的计算服务,而不需要购买物理服务器。云服务器的特点是使用云服务,无需购买硬件设备和服务器,可以根据需要使用云服务商提供的资源,包括硬盘存储、网络带宽、软件应用等,从而实现更高效率的计算和存储服...
    99+
    2023-10-26
    买电脑 服务器
  • MySQL事务是什么
    这篇文章将为大家详细讲解有关MySQL事务是什么,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。MySQL事务以及事务隔离级别MySQL事务主要用于处理操作量大,复杂度高的...
    99+
    2024-04-02
  • 什么是mysql事务
    MySQL事务是一组数据库操作的逻辑单元,提供了一种保证数据一致性和完整性的机制,具有以下四个特性:1、原子性,事务中的所有操作被视为一个原子单元,要么全部执行成功,要么全部失败回滚;2、一致性,务开始之前和结束之后,数据库的状态必须保持一...
    99+
    2023-07-28
  • mysql总是安装不上是怎么回事
    mysql 安装失败可能由权限不足、端口冲突、防火墙阻止、软件冲突、硬件不兼容、损坏的安装文件、系统错误或缺少依赖项等原因引起,建议检查权限、查找端口冲突、安装依赖项,如以上步骤无效,重...
    99+
    2024-04-14
    mysql c++
  • 云服务器就是不用买电脑了嘛
    云服务器是一种提供按需服务的虚拟计算资源,它可以通过互联网连接到服务器,并通过服务器集群来提供强大的计算和存储能力。它并不是必须购买的硬件设备,但是可以根据自己的需求和使用情况选择合适的云服务器。 如果你只是需要按需使用计算资源,你可以选...
    99+
    2023-10-26
    买电脑 服务器
  • 云服务器就是不用买电脑了吧
    云服务器是一种提供服务器托管和带宽存储的服务,可以让用户在本地计算机上轻松实现数据存储和处理。如果不需要购买服务器或存储空间,你可以租用云服务器。以下是一些常见的云服务器租用服务,你可以根据自己的需求进行选择: Google Cloud...
    99+
    2023-10-26
    买电脑 服务器
  • 云服务器就是不用买电脑了吗
    云服务器不一定需要购买,只要你有相应的技术和资源,就可以使用云服务器。 以IaaS云服务为例,许多云服务提供商向用户提供按月计费或按年计费的云服务器租用服务,而不是购买。用户可以根据自己的需求选择合适的云服务器,例如弹性计算、容错容灾、云...
    99+
    2023-10-26
    买电脑 服务器
  • MySQL中事务是什么
    这篇文章给大家分享的是有关MySQL中事务是什么的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。1. 在MySQL环境中,事务由作为一个单独单元的一个或多个SQL语句组成。这个单元...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作