介绍如何从表中删除数据,主要涵盖
DELETE 和 TRUNCATE TABLE 两种语句的使用方法、区别及注意事项。DELETE 语句
DELETE 语句是标准 SQL 语法,用于从表中移除指定记录。语法
DELETE FROM tbl_name [WHERE where_condition] [ORDER BY ...] [LIMIT row_count];
参数说明
WHERE where_condition:(可选)指定删除条件,仅删除满足条件的记录。ORDER BY:(可选)指定删除顺序。LIMIT row_count:(可选)限制单次删除的行数。使用示例
1. 创建测试表。
CREATE TABLE sbtest1 (id INT PRIMARY KEY, v1 INT, v2 INT, v3 INT);
2. 删除满足条件的数据。
DELETE FROM sbtest1 WHERE v1 = 100;
3. 删除指定数量的数据。
DELETE FROM sbtest1 WHERE v2 < 1000 LIMIT 1000;
4. 按顺序删除指定数量的数据。
DELETE FROM sbtest1 ORDER BY id LIMIT 500;
5. 删除整张表的数据。
DELETE FROM sbtest1;
TRUNCATE TABLE
TRUNCATE TABLE 用于快速清空整张表的数据。语法
TRUNCATE TABLE tbl_name;
使用示例
1. 清空表数据。
-- 创建测试表CREATE TABLE sbtest1 (id INT PRIMARY KEY,v1 INT,v2 INT,v3 INT);-- 快速清空表中所有数据TRUNCATE TABLE sbtest1;
2. 清除某个分区。
-- 创建 RANGE 分区表CREATE TABLE sbtest2 (id INT,create_time DATE,v1 INT,PRIMARY KEY (id, create_time))PARTITION BY RANGE (TO_DAYS(create_time)) (PARTITION p202401 VALUES LESS THAN (TO_DAYS('2024-02-01')),PARTITION p202402 VALUES LESS THAN (TO_DAYS('2024-03-01')),PARTITION pmax VALUES LESS THAN MAXVALUE);-- 快速清理 2024 年 1 月的数据ALTER TABLE sbtest2TRUNCATE PARTITION p202401;
注意事项
1. 删除操作前建议先备份重要数据。
2. 生产环境执行大范围删除前,建议先在测试环境验证。
3. 监控删除操作对系统性能的影响。
4. 合理设置事务超时时间,避免长事务阻塞系统。