
一、前言
在 MySQL 中,可以使用 DELETE、TRUNCATE 和 DROP 语句来删除数据。这三者虽然都能达到删除数据的效果,但它们的作用范围、执行效率以及数据恢复能力存在差异。
本文将介绍:
二、MySQL 中的三种删除方式
1.DELETE语句
DELETE 语句用于删除表中符合条件的数据行,不删除表本身。
基本语法:
DELETE FROM 表名 WHERE 条件;
示例:
假设有以下表 users:
CREATE TABLE users (
id INT PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(50),
age INT,
city VARCHAR(50)
);
-- 插入测试数据
INSERT INTO users (name, age, city) VALUES
('Alice', 25, 'Beijing'),
('Bob', 30, 'Shanghai'),
('Charlie', 35, 'Guangzhou');
DELETE FROM users WHERE name = 'Bob';
结果:删除 name='Bob' 的记录。
DELETE FROM users;
结果:清空表中数据,但表结构还在。
DELETE FROM users WHERE age > 25;
结果:删除所有年龄大于 25 岁的用户。
2.TRUNCATE语句
TRUNCATE 语句用于清空表中的所有数据,但不会记录删除操作,效率比 DELETE 更高。
基本语法:
TRUNCATE TABLE 表名;
示例:
TRUNCATE TABLE users;
结果:
3.DROP语句
DROP 语句用于删除表本身,不仅数据被删除,表结构也会消失。
基本语法:
DROP TABLE 表名;
示例:
DROP TABLE users;
结果:
三、DELETE高级用法
1. 使用DELETE删除多表数据(多表关联删除)
在多表关联查询时,可以使用 JOIN 删除多个表中的数据。
基本语法:
DELETE 表别名 FROM 表1 AS 别名1 JOIN 表2 AS 别名2 ON 关联条件 WHERE 条件;
示例:
假设有以下两张表:
CREATE TABLE customers (
customer_id INT PRIMARY KEY,
name VARCHAR(50)
);
CREATE TABLE orders (
order_id INT PRIMARY KEY,
customer_id INT,
amount DECIMAL(10,2),
FOREIGN KEY (customer_id) REFERENCES customers(customer_id)
);
-- 插入数据
INSERT INTO customers VALUES (1, 'Alice'), (2, 'Bob'), (3, 'Charlie');
INSERT INTO orders VALUES (1, 1, 100.50), (2, 2, 200.75), (3, 3, 300.25);
DELETE o FROM orders o JOIN customers c ON o.customer_id = c.customer_id WHERE c.name = 'Bob';
结果:
2. 使用LIMIT限制删除条数
在删除大量数据时,可以使用 LIMIT 限制删除的行数,防止误操作导致大量数据丢失。
基本语法:
DELETE FROM 表名 WHERE 条件 LIMIT N;
示例:
删除 users 表中的前两条记录:
DELETE FROM users ORDER BY id ASC LIMIT 2;
结果:
3. 使用ORDER BY和LIMIT
在删除数据时,可以通过 ORDER BY 和 LIMIT 指定删除顺序和数量。
示例:
删除年龄最大的 2 个用户:
DELETE FROM users ORDER BY age DESC LIMIT 2;
结果:
四、DELETE与TRUNCATE的区别
| 对比项 | DELETE |
TRUNCATE |
|---|---|---|
| 数据删除方式 | 按行删除 | 整表清空 |
| 是否记录日志 | 记录日志 | 不记录日志 |
| 自增 ID 重置 | 不重置 | 重置为 1 |
| 删除速度 | 慢,逐行删除 | 快,清空整表 |
| 是否可回滚 | 可回滚(开启事务) | 不可回滚 |
| 触发器是否执行 | 会触发 | 不会触发 |
| 表空间释放 | 不释放 | 释放表空间 |
五、删除操作的注意事项
六、总结
在 MySQL 中,删除数据主要使用以下三种方式:
高级用法:
到此这篇关于MySQL 删除数据详解的文章就介绍到这了,




















