16MySQL之DCL 中 COMMIT和ROllBACK

😹 作者: gh-xiaohe
😻 gh-xiaohe的博客
😽 觉得博主文章写的不错的话,希望大家三连(✌关注,✌点赞,✌评论),多多支持一下!!

💒DCL 中 COMMIT和ROllBACK

🚏 DCL 中 COMMIT和ROllBACK

🚀 COMMIT

     COMMIT:提交数据。一旦执行COMMIT,则数据就被永久的保存在了数据库中,意味着数据不可以回滚。

🚄 ROLLBACK

     ROLLBACK:回滚数据。一旦执行ROLLBACK,则可以实现数据的回滚。回滚到最近的一次COMMIT之后。

🚒对比

  • 相同点:都可以实现对表中所有数据的删除,同时保留表结构。
  • 不同点:
    • TRUNCATE TABLE:一旦执行此操作,表数据全部清除。同时,数据是不可以回滚的。
    • DELETE FROM:一旦执行此操作,表数据可以全部清除(不带WHERE)。同时,数据是可以实现回滚的。

🚏DDL 和 DML 的说明

    ① DDL的操作一旦执行,就不可回滚。指令SET autocommit = FALSEDDL操作失效。(因为在执行完DDL操作之后一定会执行一次COMMIT。而此COMMIT操作不受SET autocommit = FALSE影响的。)

    ② DML的操作默认情况,一旦执行,也是不可回滚的。但是,如果在执行DML之前执行了 SET autocommit = FALSE,则执行的DML操作就可以实现回滚

🚏案例

🚀 COMMIT、DELETE

# 演示:DELETE FROM 
#1)
COMMIT;
#2)
SELECT *
FROM myemp3;
#3)
SET autocommit = FALSE;
#4)
DELETE FROM myemp3;
#5)
SELECT *
FROM myemp3;
#6)
ROLLBACK;
#7)
SELECT *
FROM myemp3;

在这里插入图片描述

🚄 COMMIT、 ROLLBACK

# 演示:TRUNCATE TABLE
#1)
COMMIT;
#2)
SELECT *
FROM myemp3;
#3)
SET autocommit = FALSE;
#4)
TRUNCATE TABLE myemp3;
#5)
SELECT *
FROM myemp3;
#6)
ROLLBACK;
#7)
SELECT *
FROM myemp3;

在这里插入图片描述

🚏MySQL8.0的新特性:DDL的原子化

     在MySQL 8.0版本中,InnoDB表的DDL支持事务完整性,即DDL操作要么成功要么回滚。DDL操作回滚日志写入到data dictionary数据字典表mysql.innodb_ddl_log(该表是隐藏的表,通过show tables无法看到)中,用于回滚操作。通过设置参数,可将DDL操作日志打印输出到MySQL错误日志中。

🚀 分别在MySQL 5.7版本和MySQL 8.0版本中创建数据库和数据表,结果如下:

CREATE DATABASE mytest; # 创建数据库 mytest

USE mytest; # 切换到 mytest 数据库下

CREATE TABLE book1( # 创建 book1 表
book_id INT ,
book_name VARCHAR(255)
);

SHOW TABLES; # 查看当前数据下的表

在这里插入图片描述

🚬(1)在MySQL 5.7版本中,测试步骤如下:

# 在 mysql5.7 下
DROP TABLE book1,book2;  # 此时删除数据库 book1 和 book2 注意此时没有 book2

SHOW TABLES;

在这里插入图片描述

🚬(2)在MySQL 8.0版本中,测试步骤如下:

# 在 mysql8.0 下
DROP TABLE book1,book2;  # 此时删除数据库 book1 和 book2 注意此时没有 book2

SHOW TABLES;

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

gh-xiaohe

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值