【建议收藏】数据库 SQL 入门——事务(内附演示)

这篇具有很好参考价值的文章主要介绍了【建议收藏】数据库 SQL 入门——事务(内附演示)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

【建议收藏】数据库 SQL 入门——事务(内附演示)

📚引言

🙋‍♂️作者简介:生鱼同学,大数据科学与技术专业硕士在读👨‍🎓,曾获得华为杯数学建模国家二等奖🏆,MathorCup 数学建模竞赛国家二等奖🏅,亚太数学建模国家二等奖🏅。

✍️研究方向:复杂网络科学

🏆兴趣方向:利用python进行数据分析与机器学习,数学建模竞赛经验交流,网络爬虫等。

事务是一组操作的集合,其会把所有的操作作为一个整体提交或者撤销。

在本文中,我们将会对SQL中的事务进行介绍与演示,话不多说,我们开始吧。

📖事务

📑事务的概念

为了更好的了解事务的概念,我们看下面这个例子。

假设A要给B转账100元,此时我们需要进行如下三个操作:

  • 查询A的账户余额
  • A账户余额-100
  • B账户余额+100

而这种操作必须一次性完成,如果整个操作中途出现了问题那么就应该立即回滚,停止所有的账户操作。

如果上述操作没有停止,那么将会导致有不可与预知的错误。
【建议收藏】数据库 SQL 入门——事务(内附演示)
SQL中也支持这种将很多操作集中在一起的方式就是事务,接下来我们看事务的操作。

📑事务操作

🔖查看与设置事务提交方式

在SQL中默认事务时自动提交的,所以当我们编写SQL的语句时,默认其就是一个事务。我们可以通过语句来查询事务的提交方式并修改它,代码如下:

SELECT @@AUTOCOMMIT;

【建议收藏】数据库 SQL 入门——事务(内附演示)
可以看到,默认的提交方式为1,也就是自动提交。

特别的,我们可以对其进行修改为手动提交,代码如下:

SET @@AUTOCOMMIT = 0;

【建议收藏】数据库 SQL 入门——事务(内附演示)

🔖提交事务与回滚事务

在更改为手动提交事务后,我们就需要手动的通过命令来进行事务的提交与回滚,代码如下:

# 提交事务
COMMIT;
# 回滚事务
ROLLBACK;

接下来,我们就进行事务提交与回滚的演示。首先我们建立一个账户余额表并为其添加两条数据,代码如下:

CREATE TABLE MONEY(
NAME VARCHAR(10) NOT NULL,
MONEY INT DEFAULT 0
);

INSERT INTO MONEY (NAME,MONEY) VALUES('TOM',1000),('JANE',1000);

结果如下:
【建议收藏】数据库 SQL 入门——事务(内附演示)
假设我们需要把TOM的余额修改为2000,此时我们在控制台1进行下面的操作:

update money set money = 2000 where name = 'TOM';

在我们查询表中的值的时候出现了下面的结果,可是我们真的修改成功了吗?
【建议收藏】数据库 SQL 入门——事务(内附演示)
这时我们打开控制台2,继续查询上述相同的内容结果如下:
【建议收藏】数据库 SQL 入门——事务(内附演示)
显然,我们刚才修改的结果还没有真正上传到数据库,而是在控制台1中执行了。此时我们就需要COMMIT;来完成控制台1的事务。

此时我们在控制台1中COMMIT提交我们的事务,这就能够在控制台2查询到我们的修改了。

【建议收藏】数据库 SQL 入门——事务(内附演示)
另外,我们也可以不使用SET @@AUTOCOMMIT设定事务状态,可以使用下面的开启事务代码代替:

# 开启事务
START TRANSACTION;
# 提交事务
COMMIT;
# 回滚事务
ROLLBACK;

下面我们就利用上述的代码来示范一下事务回滚,假设还是上述相同的情况,这次我们希望需要把JANE的余额修改为2000。为了演示方便,我们将在两个控制台中演示上述操作:
【建议收藏】数据库 SQL 入门——事务(内附演示)
可以看到,我们在左边的控制台1进行了更新操作,而控制台2还没有收到更新操作,这是因为我们在控制台1中开启了事务。与此同时,鸡舍我们想要放弃上述的操作而取消事务的进行,可以使用ROLLBACK进行回滚,这样不会对数据库中的数据有任何影响。

【建议收藏】数据库 SQL 入门——事务(内附演示)

📑事务的特性

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

📑并发事务问题

  • 脏读:个事务读到另外一个事务还没有提交的数据 。
  • 不可重复读:一个事务先后读取同一条记录,但两次读取的数据不同,称之为不可重复读。
  • 幻读:一个事务按照条件查询数据时,没有对应的数据行,但是在插入数据时,又发现这行数据已经存在。

📑事务隔离级别

为了处理上述的并发事务级别,我们可以对事务进行事务级别的更改,SQL中的事务隔离级别种类如下所示:

隔离级别 脏读 不可重复读 幻读
Read uncommitted —— —— ——
Read committed —— —— 解决
Repeatable Read(默认) —— 解决 解决
Serializable 解决 解决 解决

我们可以下面的代码查看事务隔离级别或者设置事务隔离级别:

# 查看事务隔离级别
SELECT @@TRANSACTION ISOLATION
# 设置事务隔离级别
SET [SESSION|GLOBAL] TRANSACTION ISOLATION LEVEL  {READ UNCOMMITTED|READ COMMITTED|REPEATABLE READ|SERIALIZABLE}

📍总结

本次列举了SQL中常用事务相关语句,在实际学习的过程中还需要多学习以及使用才能熟练掌握。

余下的SQL内容我也将持续更新,如果感兴趣的话不妨订阅本专栏或者点个关注,我们下次再见。文章来源地址https://www.toymoban.com/news/detail-422569.html

到了这里,关于【建议收藏】数据库 SQL 入门——事务(内附演示)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • 序列号及序列号生成器(号段模式,数据库模式)详细介绍(建议收藏)

    现如今,数据的唯一性和可追溯性变得越来越重要。从简单的数据库主键到复杂的分布式系统,唯一标识符在各种场景中都发挥着关键作用。序列号,作为一种广泛应用的唯一标识符,为我们提供了确保数据完整性和一致性的基础。在这个背景下,高效、可靠的序列号生成器

    2024年02月03日
    浏览(45)
  • SQL笔记(1)——MySQL创建数据库(收藏吃灰版)

    本文详细记录MySQL创建一个数据库的过程,不只是构建步骤,更多的是每一步涉及到的知识点。一般创建数据库有两种方式,一种是命令,另外一种就是通过数据库管理工具,本文主要记录通过命令的方式创建; 后面的学习也都是基于这个数据库进行的; 创建一个大学生成绩

    2024年02月08日
    浏览(41)
  • Sql Server 数据库事务与锁,同一事务更新又查询锁?期望大家来解惑

    我有一个People表,有三行数据: 如果我们没详细了解数据库事务执行加锁的过程中,会不会有这样一个疑问:如下的这段 SQL 开启了事务,并且在事务中进行了更新和查询操作。 我们知道sql server数据库的默认事务级别是READ COMMITTED(已提交的读取),我们再看一下已提交读事

    2024年02月01日
    浏览(45)
  • Sql Server 数据库事务与锁,同一事务更新又查询锁的变化,期望大家来解惑!

    我有一个People表,有三行数据: 如果我们没详细了解数据库事务执行加锁的过程中,会不会有这样一个疑问:如下的这段 SQL 开启了事务,并且在事务中进行了更新和查询操作。 我们知道sql server数据库的默认事务级别是READ COMMITTED(已提交的读取),我们再看一下已提交读事

    2024年02月01日
    浏览(59)
  • C# 从代码入门 Mysql 数据库事务

    在业务开发中,使用数据库事务是必不可少的。而开发中往往会使用各种 ORM 执行数据库操作,简化代码复杂度,不过,由于各种 ORM 的封装特性,开发者的使用方式也不一样,开发者想要了解 ORM 对事务做了什么处理是比较难的。因此,本文介绍数据库事务基础、Ado.net 事务

    2024年02月04日
    浏览(41)
  • 【SQL Server】数据库开发指南(八)高级数据处理技术 MS-SQL 事务、异常和游标的深入研究

    本系列博文还在更新中,收录在专栏:#MS-SQL Server 专栏中。 本系列文章列表如下: 【SQL Server】 Linux 运维下对 SQL Server 进行安装、升级、回滚、卸载操作 【SQL Server】数据库开发指南(一)数据库设计的核心概念和基本步骤 【SQL Server】数据库开发指南(二)MSSQL数据库开发对

    2024年02月07日
    浏览(64)
  • 【七天入门数据库】第七天 MySQL的事务管理

    【七天入门数据库】第一天 MySQL的安装部署 【七天入门数据库】第二天 数据库理论基础 【七天入门数据库】第三天 MySQL的库表操作 【七天入门数据库】第四天 数据操作语言DML 【七天入门数据库】第五天 MySQL的备份恢复 【七天入门数据库】第六天 MySQL的视图与索引 【七天

    2024年02月15日
    浏览(41)
  • 轻松入门MySQL:深入学习数据库表管理,创建、修改、约束、建议与性能优化(3)

    在项目中,正确设置数据表的限定条件是数据存储过程中的关键一步。我们频繁需要创建和修改表以管理各种业务数据。让我们深入学习创建和修改数据表的方法,以产品信息表( product_info )为例。 创建数据表 首先,让我们了解产品信息表的结构: product_id product_name cate

    2024年02月20日
    浏览(42)
  • 异地访问Oracle数据库的解决方案:利用内网穿透实现PL/SQL远程连接的建议与步骤

    ​ 小月糖糖主页 在强者的眼中,没有最好,只有更好。 移动开发领域优质创作者,阿里云专家博主 Oracle,是甲骨文公司的一款关系数据库管理系统,它在数据库领域一直处于领先地位。可以说Oracle数据库系统是世界上流行的关系数据库管理系统,系统可移植性好、使用方便

    2024年02月11日
    浏览(38)
  • 数据库入门-----SQL基础知识

    目录 📖前言: 📑SQL概述通用语法:  🐳DDL: 🐻操作数据库: 🐞数据类型:  🦉操作表: 🦦DML: 语法规则: 案例演示: 🦏DQL: 语法规则: 案例演示: # 基础查询:  # 条件查询:  #聚合函数:  # 分组查询:  #排序查询:  #分页查询:  执行顺序: 🫎DCL: 语法规则:

    2024年04月10日
    浏览(43)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包