mysql如何删除数据

来源:这里教程网 时间:2026-02-28 20:09:15 作者:

在 MySQL 中删除数据主要通过 DELETE 语句来实现。根据需求不同,可以删除单条记录、多条记录,甚至清空整张表的数据。下面介绍几种常用的删除方式及注意事项。

1. 删除指定条件的数据(DELETE FROM)

使用 DELETE 语句配合 WHERE 条件可以删除满足特定条件的行。

语法:

DELETE FROM 表名 WHERE 条件;

示例:

删除 id 为 5 的用户:
DELETE FROM users WHERE id = 5;
删除名字为 '张三' 的所有记录:
DELETE FROM users WHERE name = '张三';
删除创建时间早于 2023-01-01 的数据:
DELETE FROM logs WHERE created_at 

⚠ 注意:WHERE 条件非常关键,如果省略 WHERE,会删除表中所有数据!

2. 清空整张表(TRUNCATE TABLE)

当需要快速删除表中所有数据并重置自增 ID 时,推荐使用 TRUNCATE。

语法:

TRUNCATE TABLE 表名;

示例:

清空临时日志表:
TRUNCATE TABLE temp_logs;

TRUNCATE 与 DELETE 的区别:

TRUNCATE 是 DDL 操作,速度更快,不逐行删除; TRUNCATE 会重置自增列(AUTO_INCREMENT)从 1 开始; TRUNCATE 不能加 WHERE 条件; TRUNCATE 不触发 DELETE 触发器; TRUNCATE 操作无法回滚(在某些存储引擎下);

3. 删除表中所有数据(DELETE 不带 WHERE)

虽然不推荐,但也可以用 DELETE 删除全部数据。

语法:

DELETE FROM 表名;

这会逐行删除所有记录,保留表结构,自增 ID 不会重置。

⚠ 风险提示:执行前务必确认是否真的要删除所有数据,建议先备份或在测试环境验证。

4. 安全删除建议

删除前先查询确认:
SELECT * FROM 表名 WHERE 条件;
重要操作前备份数据:
CREATE TABLE 备份表 AS SELECT * FROM 原表;
在事务中执行删除,便于回滚(适用于 InnoDB):
BEGIN;<br>DELETE FROM users WHERE id = 10;<br>-- 确认无误再提交<br>COMMIT;

或出错时:
ROLLBACK;
避免在生产环境直接执行无 WHERE 的 DELETE

基本上就这些。关键是搞清楚用 DELETE 还是 TRUNCATE,别误删数据。

相关推荐