-- 删除符合条件的单/多条数据DELETE FROM product_category WHERE id = 10;-- 删除整张表全部数据(不推荐,量大性能差)DELETE FROM product_category;-- 多条件删除DELETE FROM order_info WHERE create_time < '2026-01-01' AND is_delete = 0;
WHERE 条件精准删除,可回滚(事务中执行可 ROLLBACK);-- 每次删1000条,分批删除大表数据DELETE FROM log_info WHERE id < 100000 LIMIT 1000;
TRUNCATE TABLE product_category;-- 简写TRUNCATE product_category;
线上业务主表禁止随便执行 TRUNCATE,一旦执行整表数据清空且无法回滚。

DROP TABLE IF EXISTS product_category;
废弃不用的旧表、历史临时表,确认永久不再使用才执行。
不执行任何 DELETE 物理删除 SQL,通过标记字段区分数据是否有效
is_delete TINYINT DEFAULT 0 COMMENT 0正常 1已删除UPDATE product_category SET is_delete = 1 WHERE id = 10;
SELECT * FROM product_category WHERE is_delete = 0;
mybatis-plus: global-config: db-config: logic-delete-field: isDelete logic-delete-value: 1 logic-not-delete-value: 0
@TableLogicprivate Integer isDelete;
mapper.deleteById(10L),MP 自动执行 UPDATE,不会执行 DELETE。电商订单、商品、用户、支付流水、交易类核心业务表(强制逻辑删除)。
避免一次性删除几十万行锁表阻塞业务:
-- 循环执行,每次删1000条,直到无数据DELETE FROM operation_log WHERE create_time < '2026-01-01' LIMIT 1000;
历史日志按月分表,直接 truncate 过期月份分表,不影响主业务表。
CREATE TABLE log_new LIKE log_old;RENAME TABLE log_old TO log_bak, log_new TO log_old;表格
| 方式 | 语法类型 | 是否删表结构 | 支持条件 WHERE | 自增 ID | 可回滚 | 速度 | 生产业务表推荐 |
|---|---|---|---|---|---|---|---|
| DELETE | DML | 保留 | ✅支持 | 不重置 | ✅事务可回滚 | 慢(量大阻塞) | 少量精准删除 |
| TRUNCATE | DDL | 保留 | ❌不支持 | 重置为 1 | ❌不可回滚 | 极快 | 测试 / 独立日志表 |
| DROP TABLE | DDL | 全部删除 | ❌不支持 | 无 | ❌不可回滚 | 快 | 废弃无用表 |
| 逻辑删除 UPDATE | DML | 完全保留 | ✅支持 | 不变 | ✅可恢复 | 快 | 电商核心业务(首选) |
DELETE FROM 表名,会锁全表;建表时设置外键 ON DELETE CASCADE,删除主表数据自动同步删除子表关联数据
CREATE TABLE order_item( id BIGINT PRIMARY KEY AUTO_INCREMENT, order_id BIGINT, FOREIGN KEY (order_id) REFERENCES order_info(id) ON DELETE CASCADE);
删除订单主表数据,订单明细会自动删除;电商项目不推荐使用,级联删除不可控,容易误删大量数据,业务代码手动控制删除明细更安全。
以上就是MySQL删除数据全方式详解的详细内容,更多关于MySQL删除数据方式的资料请关注本站其它相关文章!
您可能感兴趣的文章:樱花动漫APP下载-樱花动漫官方正版APP最新下载入口
premiere画中画大小位置调节方法 - premiere如何调节画中画大小和位置
丁香修剪技巧有哪些-如何用丁香修剪技巧打造优美树形
在Win2008 R2中如何删除DHCP管理工具-Win2008 R2怎样删除DHCP管理工具
如何通过支付宝阿宝自动匹配生活服务入口-怎样借助支付宝阿宝自动匹配生活服务入口
edius素材添加单门推效果的操作方法-edius素材如何添加单门推效果