【MySQL】MySQL事务保姆级教程(适合MySQL初学者学习)

简介: 【MySQL】MySQL事务保姆级教程(适合MySQL初学者学习)

🌟前言


无论是在校招、社招,亦或者大学计算机专业、软件工程等相关面试或者考试中,MySQL事务的相关知识都是必不可少的。本文主要为MySQL初学者快速学习MySQL事务保驾护航。


🌟事务的定义及作用


定义:事务是一个不可再此分割的最小工作单元。换句话说事务通常代表一个完整的业务或者业务线。通俗来说,一个业务功能所包含的操作,要么全部成功,要么全部失败。

作用:


  • 为数据库的操作或者一个完整的业务功能提供一个从失败操作中恢复到正常状态的方法,同时保证数据库操作在异常状态下保持一致性。
  • 防止多个应用程序并发访问数据库时,多个应用程序间的操作产生干扰,影响业务功能的正常性。

🌟事务的特性(ACID)


  • 原子性(Atomicity):事务必须是最小的工作单元,一个事务中的所有操作,应该做到:要么全部成功,要么全部失败,否则回滚到初始状态。
  • 一致性(Consistency):事务在开始和结束时,数据必须保持一致状态。通俗说就是让数据保持逻辑上的“合理性”,比如:小明给小红打100块钱,既要让小明的账户减少100,又要让小红的账户上增加100块钱;
  • 隔离性(Isolation):事务的隔离性确保并发执行的事务彼此之间相互隔离,每个事务都感觉不到其他并发事务的存在。独立执行,互不干扰。
  • 持久性(Durability):事务一旦执行成功,数据将会永久保存到数据库中。

🌟事务的隔离级别


隔离级别一览表


隔离级别 描述 现象
读未提交(Read Uncommitted) 最低隔离级别,一个事务可以读取另一个未提交事务的数据。 脏读、不可重复读、幻读都可能发生。
读已提交(Read Committed) 一个事务只能读取已提交事务的数据。 脏读不会发生,但不可重复读和幻读仍然可能发生。
可重复读(Repeatable Read) MySQL默认隔离级别,一个事务在执行过程中多次读取同一行的数据结果都是一致的 脏读和不可重复读不会发生,但幻读仍然可能发生。
串行化(Serializable) 最高隔离级别,对于同一份数据资源同时只允许一个事务进行读写操作。 脏读、不可重复读和幻读都不会发生。


隔离级别举例解读


我们下面来对每个隔离级别,提出具体的例子进行解读,供大家理解。所有的例子都以下表为基础。串行化就不做出具体例子说明了。

id product_name price
1 手机 1000
2 电脑 2000
3 平板 800


读未提交


1.A查询价格表:select * from price;

2.B修改价格表中平板的价格为100,但是并未提交:update set price=100 where id=3;

3.A再次查询价格表时,平板的价格会显示100。


读已提交


1.A查询价格表:select * from price;

2.B修改价格表中平板的价格为200,并提交:update set price=200 where id=3;

3.A再次查询价格表时,平板的价格会显示200。


可重复读


1.A查询价格表:select * from price;

2.B修改价格表中平板的价格为300,并提交:update set price=300 where id=3;

3.A查询价格表时,平板的价格依然是原数据80。


🌟事务控制语句


控制语句 描述
BEGINSTART TRANSACTION 开始一个新的事务
COMMIT 提交当前事务的修改,使其生效,并永久保存到数据库中
ROLLBACK 回滚当前事务的修改,取消事务所做的所有修改
SAVEPOINT savepoint_name 创建一个保存点,用于回滚到特定的保存点
RELEASE SAVEPOINT savepoint_name 删除指定的保存点
ROLLBACK TO SAVEPOINT savepoint_name 回滚到指定的保存点,并取消保存点之后的所有修改


🌟写在最后


最后感谢大家对于本篇博文的阅读,如有不足之处还请大家在评论区留言,以便后续发布更适合大家学习的博文。


相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。   相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情: https://www.aliyun.com/product/rds/mysql 
目录
相关文章
|
11月前
|
算法 Linux Shell
Linux实用技能:打包压缩、热键、Shell与权限管理
本文详解Linux打包压缩技巧、常用命令与原理,涵盖.zip与.tgz格式操作、跨系统传文件方法、Shell运行机制及权限管理,助你高效使用Linux系统。
Linux实用技能:打包压缩、热键、Shell与权限管理
|
Java 关系型数据库 MySQL
太牛了! GitHub大牛呕心沥血整理的5000页Java学习手册文档
今天整理了一套 5000 页的 Java 学习手册,,新鲜出炉,分享给大家!此手册内容专注 Java技术,包括 JavaWeb,SSM,Linux,Spring Boot,MyBatis,MySQL,Nginx,Git,GitHub,Servlet,IDEA,多线程,集合,JVM,DeBug, Dubbo,Redis,算法,面试题等相关内容。
|
10月前
|
存储 Oracle Java
java零基础学习者入门课程
本课程为Java零基础入门教程,涵盖环境搭建、变量、运算符、条件循环、数组及面向对象基础,每讲配示例代码与实践建议,助你循序渐进掌握核心知识,轻松迈入Java编程世界。
749 0
|
机器学习/深度学习 算法
《算法导论(原书第3版)》一3.2 标准记号与常用函数
本节书摘来自华章出版社《算法导论(原书第3版)》一 书中的第3章,第3.2节,作者:(美)Thomas H.Cormen,Charles E.Leiserson,Ronald L.Rivest,Clifford Stein,更多章节内容可以访问云栖社区“华章计算机”公众号查看。
2868 0
|
消息中间件 测试技术
基于推和拉两种方式消费RabbitMQ消息
基于推和拉两种方式消费RabbitMQ消息
1432 0
基于推和拉两种方式消费RabbitMQ消息
|
存储 缓存 算法
LeetCode146 手撕LRU算法的2种实现方法
LeetCode146 手撕LRU算法的2种实现方法
684 0
LeetCode146 手撕LRU算法的2种实现方法
|
10月前
|
供应链 算法 机器人
2025年度十大机器视觉系统解决方案提供商推荐与深度评析
制造业迈向智能化,机器视觉成核心驱动力。本报告聚焦十大领先企业,从技术、方案、生态与服务四大维度深度剖析,涵盖树根科技、凌云光、奥普特等代表厂商,揭示其在工业智能转型中的战略布局与核心优势,为制造企业甄选合作伙伴提供权威参考,助力实现可持续进化与高质量发展。
935 0
|
监控 网络协议 Java
Nifi 安装-1 | 学习笔记
快速学习 Nifi 安装-1
1258 0
Nifi 安装-1  |  学习笔记
|
运维 安全 KVM
IP KVM是怎么实现远程控制数据中心机房服务器的?
随着网络企业的建立,数据中心机房运维人员都会用到一种比较常见的设备那就是KVM切换器,通过这种设备可以有效的管控制数据机房的各服务器状态,提高日常工作效率....
Elasticsearch离线文档安装部署教程(Elastic认证考试版)
此文档是针对Elastic认证考试而提供的 7.13 版本离线文档安装教程 如需下载最新版本,或指定版本,戳: Elasticsearch离线文档(支持选择版本)安装部署教程 鉴于备考环境需要经常访问官方文档,而官方访问速度齁慢齁慢。特此给出官方文档离线版食谱,各位客官细细品尝。
Elasticsearch离线文档安装部署教程(Elastic认证考试版)

热门文章

最新文章