MySQL— 基础语法大全及操作演示!!!(事务)

这篇具有很好参考价值的文章主要介绍了MySQL— 基础语法大全及操作演示!!!(事务)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

MySQL— 基础语法大全及操作演示!!!

  • 1、MySQL概述
  • 2、SQL
  • 3、函数
  • 4、约束
  • 5、多表查询
  • 6、事务

MySQL进阶 —— 超详细操作演示!!!

  • 1、存储引擎
  • 2、索引
  • 3、SQL 优化
  • 4、视图 / 存储过程 / 触发器
  • 5、锁
  • 6、InnoDB 引擎
  • 7、MySQL 管理

六、事务

6.1 事务简介

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

就比如: 张三给李四转账1000块钱,张三银行账户的钱减少1000,而李四银行账户的钱要增加1000。 这一组操作就必须在一个事务的范围内,要么都成功,要么都失败。

MySQL— 基础语法大全及操作演示!!!(事务),数据库,mysql,android,数据库

  • 正常情况: 转账这个操作, 需要分为以下这么三步来完成 , 三步完成之后, 张三减少1000, 而李四增加1000, 转账成功。

MySQL— 基础语法大全及操作演示!!!(事务),数据库,mysql,android,数据库

  • 异常情况: 转账这个操作, 也是分为以下这么三步来完成 , 在执行第三步是报错了, 这样就导致张三减少1000块钱, 而李四的金额没变, 这样就造成了数据的不一致, 就出现问题了。

MySQL— 基础语法大全及操作演示!!!(事务),数据库,mysql,android,数据库

  • 为了解决上述的问题,就需要通过数据的事务来完成,我们只需要在业务逻辑执行之前开启事务,执行完毕后提交事务。如果执行过程中报错,则回滚事务,把数据恢复到事务开始之前的状态。

MySQL— 基础语法大全及操作演示!!!(事务),数据库,mysql,android,数据库

注意: 默认MySQL的事务是自动提交的,也就是说,当执行完一条DML语句时,MySQL会立即隐式的提交事务。

6.2 事务操作

数据准备:

drop table if exists account;

create table account(
	id int primary key AUTO_INCREMENT comment 'ID',
	name varchar(10) comment '姓名',
	money double(10,2) comment '余额'
) comment '账户表';

insert into account(name, money) VALUES ('张三',2000), ('李四',2000);

MySQL— 基础语法大全及操作演示!!!(事务),数据库,mysql,android,数据库

6.2.1 未控制事务

1). 测试正常情况

-- 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 = '李四';

测试完毕之后检查数据的状态, 可以看到数据操作前后是一致的。

MySQL— 基础语法大全及操作演示!!!(事务),数据库,mysql,android,数据库
2). 测试异常情况

-- 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 = '李四';

MySQL— 基础语法大全及操作演示!!!(事务),数据库,mysql,android,数据库

  • 我们把数据都恢复到2000, 然后再次一次性执行上述的SQL语句(出错了… 这句话不符合SQL语法,执行就会报错),检查最终的数据情况, 发现数据在操作前后不一致了。
6.2.2 控制事务一

⭐️ 1). 查看/设置事务提交方式

select @@autocommit ;
set @@autocommit = 0 ; -- 设置为手动提交,业务完成后也执行 commit 指令.

⭐️ 2). 提交事务

commit;

⭐️ 3). 回滚事务

rollback;

MySQL— 基础语法大全及操作演示!!!(事务),数据库,mysql,android,数据库

注意:上述的这种方式,我们是修改了事务的自动提交行为, 把默认的自动提交修改为了手动提交, 此时我们执行的DML语句都不会提交, 需要手动的执行 commit 进行提交。

6.2.3 控制事务二

⭐️ 1). 开启事务

start transactionbegin ;

⭐️ 2). 提交事务

commit;

⭐️ 3). 回滚事务

rollback;

MySQL— 基础语法大全及操作演示!!!(事务),数据库,mysql,android,数据库

6.3 事务四大特性

  1. 原子性(Atomicity):事务是不可分割的最小操作单元,要么全部成功,要么全部失败。
  2. 一致性(Consistency):事务完成时,必须使所有的数据都保持一致状态。
  3. 隔离性(Isolation):数据库系统提供的隔离机制,保证事务在不受外部并发操作影响的独立环境下运行。
  4. 持久性(Durability):事务一旦提交或回滚,它对数据库中的数据的改变就是永久的。

上述就是事务的四大特性,简称 ACID
MySQL— 基础语法大全及操作演示!!!(事务),数据库,mysql,android,数据库

6.4 并发事务问题

⭐️ 1). 赃读:一个事务读到另外一个事务还没有提交的数据。

MySQL— 基础语法大全及操作演示!!!(事务),数据库,mysql,android,数据库

  • 比如A读取到了B未提交的数据。
# 先设置隔离级别
set session transaction isolation level read uncommitted ;

MySQL— 基础语法大全及操作演示!!!(事务),数据库,mysql,android,数据库

  • read committed 可以解决脏读!
# 修改隔离级别
set session transaction isolation level read committed ;

MySQL— 基础语法大全及操作演示!!!(事务),数据库,mysql,android,数据库

⭐️ 2). 不可重复读:一个事务先后读取同一条记录,但两次读取的数据不同,称之为不可重复读。

MySQL— 基础语法大全及操作演示!!!(事务),数据库,mysql,android,数据库

  • 事务A两次读取同一条记录,但是读取到的数据却是不一样的。

MySQL— 基础语法大全及操作演示!!!(事务),数据库,mysql,android,数据库

  • repeatable read 可以解决不可重复读!
# 修改隔离级别
set session transaction isolation level repeatable read ;

MySQL— 基础语法大全及操作演示!!!(事务),数据库,mysql,android,数据库
MySQL— 基础语法大全及操作演示!!!(事务),数据库,mysql,android,数据库

⭐️ 3). 幻读:一个事务按照条件查询数据时,没有对应的数据行,但是在插入数据时,又发现这行数据已经存在,好像出现了 “幻影”。
MySQL— 基础语法大全及操作演示!!!(事务),数据库,mysql,android,数据库
MySQL— 基础语法大全及操作演示!!!(事务),数据库,mysql,android,数据库
MySQL— 基础语法大全及操作演示!!!(事务),数据库,mysql,android,数据库

  • repeatable read 可以解决幻读!
# 修改隔离级别
set session transaction isolation level serializable ;

MySQL— 基础语法大全及操作演示!!!(事务),数据库,mysql,android,数据库

6.5 事务隔离级别

为了解决并发事务所引发的问题,在数据库中引入了事务隔离级别。主要有以下几种:

MySQL— 基础语法大全及操作演示!!!(事务),数据库,mysql,android,数据库

  • 从上到下隔离级别越来越高,但性能越来越差。

⭐️ 1). 查看事务隔离级别

select @@transaction_isolation;

MySQL— 基础语法大全及操作演示!!!(事务),数据库,mysql,android,数据库

⭐️ 2). 设置事务隔离级别

set [ session | global ] transaction isolation level { read uncommitted | read committed | repeatable read | serializable }

MySQL— 基础语法大全及操作演示!!!(事务),数据库,mysql,android,数据库

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

  • 一般使用默认级别不会去修改!

🚀🚀🚀 事务操作 快速食用:---------------------------------------------------------------------------------------------------------------------------------------------------------------------------->

# 1). 开启事务
start transactionbegin ;

# 2). 提交/回滚事务
commit / rollback;

# 3). 事务的四大特性(ACID)
原子性(Atomicity)、 一致性(Consistency)、 隔离性(Isolation)、 持久性(Durability)

# 4). 并发事务问题
脏读、不可重复读、幻读

# 5). 事务隔离级别
read uncommittedread committedrepeatable readserializable

-- 设置事务隔离级别
set [ session | global ] transaction isolation level { read uncommitted | read committed | repeatable read | serializable }

注:仅供学习参考!如有不足,欢迎指正!!!文章来源地址https://www.toymoban.com/news/detail-686976.html

到了这里,关于MySQL— 基础语法大全及操作演示!!!(事务)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 初识mysql数据库之事务的概念及操作

    目录 一、数据库多客户端访问问题 1. 数据库的CURD无限制带来的问题 2. 如何解决CURD导致的问题 二、事务的概念 1. 什么是事务 2. 事务的四个属性 3. mysql对事务的管理 4. 为什么会有事务 5. 事务的版本支持 三、事务的操作 1. 事务提交方式 2. 事务操作的准备工作 2.1 数据库是网

    2024年02月15日
    浏览(33)
  • 【从删库到跑路】一文带你明白MySQL数据库的 事务 操作

    🎊专栏【MySQL】 🍔喜欢的诗句:更喜岷山千里雪 三军过后尽开颜。 🎆音乐分享【如愿】 大一同学小吉,欢迎并且感谢大家指出我的问题🥰 建议大家先看目录 是一组操作的集合,它是一个不可分割的工作单位,事务会把所有的操作作为一个整体一起向系统提交或撤销操作

    2024年02月13日
    浏览(30)
  • 【建议收藏】数据库 SQL 入门——事务(内附演示)

    🙋‍♂️作者简介:生鱼同学,大数据科学与技术专业硕士在读👨‍🎓,曾获得华为杯数学建模国家二等奖🏆,MathorCup 数学建模竞赛国家二等奖🏅,亚太数学建模国家二等奖🏅。 ✍️研究方向:复杂网络科学 🏆兴趣方向:利用python进行数据分析与机器学习,数学建模竞

    2023年04月23日
    浏览(30)
  • 1-MySQL数据库的安装和基础语法介绍

    1.MySQL是什么? MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,属于 Oracle 旗下产品。它是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL是最好的 RDBMS (Relational Database Management System,关系数据库管理系统) 应用软件之一。 关系数据库将数据保存在不同

    2024年02月08日
    浏览(36)
  • MySQL基础——数据模型·数据库操作

    ♥️ 作者:小刘在C站 ♥️ 个人主页: 小刘主页 ♥️ 每天分享云计算网络运维课堂笔记,努力不一定有回报,但一定会有收获加油!一起努力,共赴美好人生! ♥️ 树高千尺,落叶归根人生不易,人间真情 目录 1.数据模型 2. SQL 2.1 SQL通用语法 2.3 DDL 2.3.1 数据库操作 1). 查

    2024年02月06日
    浏览(52)
  • 【MySQL】数据库MySQL基础知识与操作

    作者主页:paper jie_博客 本文作者:大家好,我是paper jie,感谢你阅读本文,欢迎一建三连哦。 本文录入于《MySQL》专栏,本专栏是针对于大学生,编程小白精心打造的。笔者用重金(时间和精力)打造,将MySQL基础知识一网打尽,希望可以帮到读者们哦。 其他专栏:《算法详解

    2024年02月05日
    浏览(33)
  • MySQL数据库基础知识,基础操作详细整理

    引入: 淘宝网,京东、微信,抖音等都有各自的功能,那么当我们退出系统的时候,下次再访问时,为什么信息还存在? 数据库(Database)是按照数据结构来组织、存储和管理数据的仓库。 每个数据库都有一个或多个不同的 API 用于创建,访问,管理,搜索和复制所保存的数

    2024年04月17日
    浏览(42)
  • MySQL数据库基础(八):DML数据操作语言

    文章目录 DML数据操作语言 一、DML包括哪些SQL语句 二、数据的增删改(重点) 1、数据的增加操作 2、数据的修改操作 3、数据的删除操作 insert插入、update更新、delete删除 增加:insert 删除:delete 修改:update 1、数据的增加操作  基本语法: 特别注意:在SQL语句中,除了数字,

    2024年02月19日
    浏览(35)
  • 【Mysql】数据库基础与基本操作

    🌇个人主页:平凡的小苏 📚学习格言:命运给你一个低的起点,是想看你精彩的翻盘,而不是让你自甘堕落,脚下的路虽然难走,但我还能走,比起向阳而生,我更想尝试逆风翻盘 。 🛸 Mysql专栏 : Mysql内功修炼基地 家人们更新不易,你们的👍点赞👍和⭐关注⭐真的对我

    2024年02月13日
    浏览(35)
  • MySQL数据库、表、用户的基础操作

    根据两个实例进行练习 1)创建库 2)创建表 3)字段插入(调换位置) 4)修改字段类型 5)修改字段名 6)增加字段 7)修改表名(这一步做掉了,最后才添加上来。所以后面添加外键主表名依旧为customers。) 8)删除字段 9)修改存储引擎 2、 (1)创建表、添加外键约束 (2)删除外

    2024年02月12日
    浏览(32)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包