MySQL 数据删除三剑客:DELETE、TRUNCATE、DROP 秒懂!

在这里插入图片描述


🌟我的其他文章也讲解的比较有趣😁,如果喜欢博主的讲解方式,可以多多支持一下,感谢🤗!
🌟了解MySQL的explain执行计划请看: MySQL的explain执行计划你真的了解吗?建议收藏!

其他优质专栏: 【🎇SpringBoot】【🎉多线程】【🎨Redis】【✨设计模式专栏已完结)】…等

如果喜欢作者的讲解方式,可以点赞收藏加关注,你的支持就是我的动力
✨更多文章请看个人主页: 码熔burning

这篇文章看完保证你能理解MySQL中的delete、drop、truncate关键字!😁

一、DELETE 命令(精准删除,像个外科医生 👨‍⚕️)

DELETE 命令就像一个外科医生,可以精准地切除你不需要的部分,保留你需要的部分。

  • 例子: 假设你有一个 users 表,记录了网站用户的个人信息。

    CREATE TABLE users (
        id INT PRIMARY KEY AUTO_INCREMENT,
        username VARCHAR(255) NOT NULL,
        email VARCHAR(255) NOT NULL,
        age INT
    );
    
    INSERT INTO users (username, email, age) VALUES
    ('Alice', 'alice@example.com', 25),
    ('Bob', 'bob@example.com', 30),
    ('Charlie', 'charlie@example.com', 17),
    ('David', 'david@example.com', 40);
    
    • 场景 1: 你想删除 id 为 3 的用户(Charlie,未成年,不符合网站规定)。

      DELETE FROM users WHERE id = 3;
      

      执行后,users 表中 id 为 3 的用户就被删除了。

    • 场景 2: 你想删除所有年龄小于 18 岁的用户。

      DELETE FROM users WHERE age < 18;
      

      执行后,users 表中所有年龄小于 18 岁的用户就被删除了。

    • 场景 3: 你想删除所有用户(慎用!)。

      DELETE FROM users;
      

      执行后,users 表中的所有数据都被删除了,但表结构还在。

  • 特点回顾:

    • 精准打击: 可以根据条件删除指定的行。🎯
    • 后悔药: 可以回滚(ROLLBACK),万一删错了,还能恢复。 💊
    • 记录在案: 会记录到事务日志中,方便审计。 📝
    • 触发连锁反应: 会触发 DELETE 触发器(如果定义了)。 💥
    • 自增 ID 不变: 删除后,自增 ID 不会重置。 🔢

二、TRUNCATE 命令(一键清空,像个清洁工 🧹)

TRUNCATE 命令就像一个清洁工,一键清空房间里的所有垃圾,速度快,效率高。

  • 例子: 还是上面的 users 表。

    -- 清空 users 表中的所有数据
    TRUNCATE TABLE users;
    

    执行后,users 表中的所有数据都被清空了,就像新的一样! ✨

  • 特点回顾:

    • 速度飞快: 清空速度比 DELETE 快得多。 🚀
    • 没有后悔药: 无法回滚,删了就没了! 😱
    • 悄无声息: 不会记录到事务日志中。 🤫
    • 不触发连锁反应: 不会触发 DELETE 触发器。 🙅‍♀️
    • 重置自增 ID: 自增 ID 会重置为初始值(通常是 1)。 1️⃣

三、DROP 命令(拆迁队,连房子都拆了 🏗️)

DROP 命令就像一个拆迁队,直接把房子(表)拆了,连地基(表结构)都不留。

  • 例子: 还是上面的 users 表。

    -- 删除 users 表
    DROP TABLE users;
    

    执行后,users 表就彻底消失了,连表结构都没了! 💨

  • 特点回顾:

    • 彻底消失: 删除整个表,包括表结构和数据。 💀
    • 无法挽回: 无法回滚,删了就彻底没了! 😭
    • 不留痕迹: 不会记录到事务日志中。 👻
    • 一并清除: 会删除表上的所有索引、触发器和约束。 🗑️
    • 自增 ID 也没了: 表都没了,自增 ID 自然也消失了。 ❌

四、更形象的比喻

  • DELETE 像用修正带涂掉水性笔的写的字,可以擦一部分,也可以擦全部,擦错了还能扣掉修正带补救(回滚)。 ✏️
  • TRUNCATE 像把白板上的字直接用板擦擦掉,一下子就干净了,但擦掉就没了,没法恢复。 whiteboard
  • DROP 像把白板直接扔掉,连白板都没了,更别说上面的字了。 🗑️

五、总结

特性DELETETRUNCATEDROP
功能删除表中的数据行清空表中的所有数据删除整个表(包括表结构和数据)
速度慢(逐行删除)快(直接释放空间)非常快
回滚可以回滚无法回滚无法回滚
日志会记录到事务日志中不会记录到事务日志中不会记录到事务日志中
触发器会触发 DELETE 触发器不会触发 DELETE 触发器不会触发任何触发器
自增 ID不会重置自增 ID会重置自增 ID删除表后,自增 ID 也随之消失
空间释放释放删除行占用的空间释放整个表占用的空间释放整个表占用的空间
安全性相对安全,可以根据条件删除危险,会清空所有数据非常危险,会删除整个表
DML/DDLDML (Data Manipulation Language) 数据操作语言DDL (Data Definition Language) 数据定义语言DDL (Data Definition Language) 数据定义语言
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值