问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

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

创作时间:
作者:
@小白创作中心

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

引用
CSDN
1.
https://m.blog.csdn.net/qq_56158663/article/details/146215235

一、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:像把白板直接扔掉,连白板都没了,更别说上面的字了。 🗑️

五、总结

特性
DELETE
TRUNCATE
DROP
功能
删除表中的数据行
清空表中的所有数据
删除整个表(包括表结构和数据)
速度
慢(逐行删除)
快(直接释放空间)
非常快
回滚
可以回滚
无法回滚
无法回滚
日志
会记录到事务日志中
不会记录到事务日志中
不会记录到事务日志中
触发器
会触发DELETE触发器
不会触发DELETE触发器
不会触发任何触发器
自增 ID
不会重置自增 ID
会重置自增 ID
删除表后,自增 ID 也随之消失
空间释放
释放删除行占用的空间
释放整个表占用的空间
释放整个表占用的空间
安全性
相对安全,可以根据条件删除
危险,会清空所有数据
非常危险,会删除整个表
DML/DDL
DML (Data Manipulation Language) 数据操作语言
DDL (Data Definition Language) 数据定义语言
DDL (Data Definition Language) 数据定义语言
© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号