MySQL学习之事务控制

MySQL学习之事务控制

什么是事务控制

事务是指作为一个逻辑工作单元执行的一系列操作,这些操作要么全部成功要么全部失败。事务确保了多个数据的修改作为一个单元来处理。

在MySQL中,只有使用了Innodb存储引擎的数据库或表才支持事物事务用于维护数据库的完整性,保证成批的sql语句要么都执行,要么都不执行事务用于管理INSERTUPDATEDELETE语句

假如,张三在ATM机上给李四转账100元,在银行的业务系统中,主要会执行两步数据变更操作:

从张三的账户减去100元给李四的账户增加100元

试问,如果操作1执行成功,操作2执行失败会发生什么?

相关免费学习推荐:mysql视频教程

事务的四个特性

如果某个数据库支持事务,那么该数据库必须具备ACID四个特性,即Atomicity(原子性)、Consistency(一致性)、Isolation(隔离性)、Durability(持久性)。

原子性:事务必须是原子工作单元,事务中包含的各操作要么都做,要么都不做一致性:事务在执行完成时,必须使所有的数据都保持一致状态隔离性:事务独立运行。多个事务之间相互隔离,互不干扰。事务的100%隔离,会牺牲速度持续性:事务执行完成之后,它对系统的影响是永久性的

MySQL的事务控制

默认情况下,MySQL是自动提交事务的,即每一条INSERT、UPDATE、DELETE的SQL语句提交后会立即执行COMMIT操作。因此,要开启一个事务,可以使用start transactionbegin,或者将autocommit的值设置为0.

方法一:在这里插入图片描述方法二:在这里插入图片描述

例子

豆包爱学 豆包爱学

豆包旗下AI学习应用

豆包爱学 674 查看详情 豆包爱学 登陆数据库,使用student数据库并查看所有的数据表

USE student;SHOW TABLES;

在这里插入图片描述
2. 创建bank_account数据表并插入两条记录,设置张三的balance字段值+1000

CREATE TABLE bank_account(id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,name VARCHAR(30) COMMENT '姓名',balance DECIMAL(18, 2) COMMENT '账户余额');INSERT INTO bank_account(id, name, balance) VALUE(1, '张三', 0);INSERT INTO bank_account(id, name, balance) VALUE(2, '李四', 0);UPDATE bank_account SET balance = balance + 1000 WHERE id = 1;

在这里插入图片描述
3. 查看默认的autocommit值

SELECT @@autocommit;

在这里插入图片描述
4. 查看bank_account数据表所有记录

SELECT * FROM bank_account;

在这里插入图片描述
5. 开始事务控制并执行两条SQL语句

START TRANSACTION;UPDATE bank_account SET balance = balance - 100 WHERE id = 1;UPDATE bank_account SET balance = balance + 100 WHERE id = 2;COMMIT;

在这里插入图片描述
6. 查看此时数据表的内容

SELECT * FROM bank_account;

在这里插入图片描述
7. 再次开始事务控制,同样插入两条一样的SQL语句,但将commit(提交)变为rollback(回滚)

START TRANSACTION;UPDATE bank_account SET balance = balance - 100 WHERE id = 1;UPDATE bank_account SET balance = balance + 100 WHERE id = 2;ROLLBACK;

在这里插入图片描述
8. 再次查看数据表内容,发现回滚之后数据无变化

SELECT * FROM bank_account;

在这里插入图片描述
注:本文是博主MySQL学习的总结,不支持任何商用,转载请注明出处!如果你也对MySQL学习有一定的兴趣和理解,欢迎随时找博主交流~

更多相关免费学习推荐:mysql教程(视频)

以上就是MySQL学习之事务控制的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/292179.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年11月4日 21:03:10
下一篇 2025年11月4日 21:08:16

相关推荐

  • MySQL如何计算给定时间点偏移130分钟后的每五分钟时间点?

    MySQL时间计算:精确计算时间偏移 本文探讨如何在MySQL中计算给定时间点偏移130分钟后的每五分钟时间点。我们将使用MySQL内置函数实现这一目标,无需借助其他编程语言。 方法 核心思路是先计算偏移后的起始时间,然后利用循环生成后续的每五分钟时间点。 计算偏移后的起始时间: 使用DATE_SU…

    2025年12月11日
    000
  • PHP 8如何进行数据库连接安全

    要安全地连接 PHP 8 数据库,需要保护凭据并防止 SQL 注入:使用预处理语句分离 SQL 查询和数据,以避免 SQL 注入。使用密码哈希存储密码,防止泄露。遵循最小权限原则,限制用户的数据库访问权限。使用 HTTPS 加密数据传输。验证用户输入,防止恶意数据进入。 PHP 8 数据库连接安全:…

    2025年12月11日
    000
  • 升级到PHP

    本文档记录了在Ubuntu系统上安装或升级PHP 8.2的步骤,希望能帮助到您和其他人。 首先,更新系统软件包列表: sudo dpkg -l | grep php | tee packages.txtsudo add-apt-repository ppa:ondrej/php # 按提示键入sud…

    2025年12月11日
    000
  • Laravel中的数据库迁移

    Laravel数据库迁移:高效管理数据库架构 Laravel凭借其优雅的语法和强大的功能,成为流行的PHP框架。其数据库管理系统尤为出色,包含查询构建器、Eloquent ORM和迁移功能。迁移功能允许开发者精确控制数据库模式,简化团队协作,并在不同环境中轻松维护数据库一致性。本文将深入探讨Lara…

    2025年12月11日
    000
  • Laravel Blueprint 构建快速 Laravel 应用程序

    Laravel 开发者必备利器:Blueprint!本文将分享如何利用 Laravel Blueprint 显著提升开发效率,特别是数据库迁移、模型和工厂的创建。 数据库迁移:高效便捷 Blueprint 不仅仅是简单的建表工具,它能快速有效地搭建整个数据库环境。只需几行代码,即可定义表结构、字段和…

    2025年12月11日
    000
  • PHP7版本更新对现有项目有哪些影响

    升级到 PHP 7 带来重大性能提升和新功能,但也会产生挑战:已废弃功能被移除,需要替换。严格的类型声明要求类型匹配,避免类型错误。数组操作优化改变了某些行为,需要测试和修复。老旧扩展库与 PHP 7 不兼容,需要更新或寻找替代方案。分步升级、单元测试、代码审查和性能测试是最佳实践,可将挑战转化为机…

    2025年12月11日
    000
  • 从产品经理到独立开发人员:六个月转型指南

    从零基础到独立开发者:我的四个月转型之路 想在短短几个月内从零经验转型为能获得付费工作的独立开发者?这确实充满挑战。我曾是一名新手,甚至可以说是“菜鸟”,但我的经历证明,一切皆有可能。本文分享我的故事,希望能激励那些面临同样困境的人。 独立开发需要全面的技能。我之前的产品经理背景让我对开发流程和技术…

    2025年12月11日 好文分享
    000
  • PHP7各个版本的兼容性如何

    理论上,PHP7版本向下兼容,但实际升级可能存在细微改动导致行为差异。理解兼容性需了解PHP版本命名规则、变更日志,以及Zend引擎演进。向下兼容性仅指新版本运行旧代码,但行为可能不一致。弃用函数、扩展库不兼容是常见兼容性问题。进行全面兼容性测试至关重要,以避免上线问题。升级PHP版本可带来性能提升…

    2025年12月11日
    000
  • PHP 8如何防止代码注入攻击

    PHP 8 防止代码注入攻击的核心方法是:不相信用户输入,将其视为潜在的恶意输入。使用参数化查询和预编译语句,将用户输入作为数据传递,避免被解释为代码执行。进行输入验证和过滤,检查数据类型、长度和格式,确保符合预期。通过代码审查、调试和性能优化,确保代码正确性、效率和可维护性。 PHP 8 如何有效…

    2025年12月11日
    000
  • PHP 8如何进行错误和异常处理

    PHP 8 引入了更强大的错误和异常处理机制,包括:增强异常处理,使用 try…catch 语句块捕获和处理异常。自定义异常类,创建更具表达力的错误处理系统。性能考量和最佳实践,在需要特殊处理的情况下使用异常,避免过度使用。 PHP 8 的优雅错误与异常处理:不止是try…catch…

    2025年12月11日
    000
  • PHP 8如何防范SQL注入

    PHP 8 提供了多个防御 SQL 注入的方法:参数化查询、PDO 强化功能和输入验证过滤。参数化查询将 SQL 查询和数据分开处理,防止恶意代码执行。 PDO 具有数据类型检查、错误处理和跨数据库兼容性。输入验证过滤在使用参数化查询前检查用户输入,去除恶意代码。结合这几种方法,构建多层防御体系,保…

    2025年12月11日
    000
  • 本地开发之战:ServBay 与 MAMP

    mamp 和 servbay:本地服务器解决方案深度对比 MAMP 和 ServBay 都是优秀的本地服务器搭建工具,但它们各有千秋。本文将深入比较两者的功能、优缺点,帮助您选择最合适的工具。 MAMP 与 ServBay 的核心差异 本地服务器对于简化开发流程至关重要,MAMP 作为一款成熟的工具…

    2025年12月11日 好文分享
    000
  • 如何选择合适的PHP 8开发工具?

    PHP 8開發工具選擇取決於項目規模和個人偏好。主流選項包括:程式碼編輯器/IDE:VS Code:免費、輕量級、可擴展,適合各種平台。PHPStorm:強大的功能集,但收費且資源需求高。Sublime Text:輕量級、自訂性高,可用於簡單的PHP開發。除錯工具:Xdebug:配合VS Code或…

    2025年12月11日
    000
  • 如何安装Nginx服务器并配置PHP 8?

    Nginx与PHP 8集成指南安装Nginx:使用apt软件包管理器(Ubuntu示例)。安装PHP 8:使用ppa源和apt软件包管理器(Ubuntu示例)。配置Nginx:添加location块处理PHP文件(根据系统路径修改socket)。测试配置文件并重启Nginx。定位问题:检查Nginx…

    2025年12月11日
    000
  • 如何配置PHP 8的扩展?

    如何配置 PHP 8 扩展?确认 PHP 配置文件 (php.ini) 位置。找到并更新 extension_dir 指令,指定扩展文件目录。通过在 php.ini 中添加 extension= 开头的行来启用扩展。保存 php.ini 并重启 Web 服务器或 PHP-FPM。 如何配置PHP 8…

    2025年12月11日
    000
  • 如何配置PHP 8的数据库连接?

    如何配置PHP 8数据库连接?掌握以下关键要点:选择PDO扩展: 推荐使用PDO,它更抽象、更灵活。设置DSN: 包含数据库信息,如主机、数据库名和字符集 (建议使用utf8mb4)。启用错误抛出: 使用PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION 来…

    2025年12月11日
    000
  • PHP7和PHP8的数据库支持差异

    PHP7和PHP8的数据库支持相比,PHP8在性能上大幅提升,执行速度提升~20%,预处理语句效率更高;还提供了异步操作等高级特性。但升级时要注意数据库驱动程序兼容性和代码修改,使用预处理语句防止SQL注入漏洞至关重要。 PHP7和PHP8的数据库支持:进化还是革命? 你可能在想,PHP7和PHP8…

    2025年12月11日
    000
  • PHP 书籍推荐

    php 和 mysql 学习资源推荐:从入门到高级 本文推荐一系列 PHP 和 MySQL 学习书籍,涵盖不同技能水平,从初学者到高级开发者都能找到合适的学习资料。 初学者 PHP 和 MySQL:忍者新手: 这本书专为初学者设计,重点讲解如何构建 Web 项目,并涵盖数据库实践、安全性和数据操作。…

    2025年12月11日 好文分享
    000
  • 如何部署PHP 8应用程序?

    部署 PHP 8 应用程序涉及以下步骤:选择 Linux 服务器并安装 PHP 8 和扩展。安装 Apache 或 Nginx 网络服务器。仔细配置 PHP 配置文件 (php.ini)。审查代码是否存在硬编码路径和环境变量依赖。使用版本控制(例如 Git)管理代码。实施自动化部署流程(例如 Ans…

    2025年12月11日
    000
  • 如何在 Ubuntu 上安装 PHP

    PHP 代表超文本预处理器,它是一种基于脚本的服务器端编程语言。PHP 有助于自动化各种服务器任务。它处理动态内容、数据库请求和数据预处理/显示等任务。 安装 PHP Ubuntu 像许多开发工具一样,PHP 有几个不同的版本 版本。在撰写本文时,PHP 7.4。和 8.1 是当前 支持和最常用的软…

    2025年12月11日 好文分享
    000

发表回复

登录后才能评论
关注微信