删除操作
在 SQL 中,对表进行删除操作通常使用 DELETE 语句。以下是几种常见的删除表数据的写法以及它们之间的区别:
- DELETE FROM 表名:
-
- 这是最基本的删除表数据的写法。语法为
DELETE FROM 表名;,它会删除表中的所有数据,但保留表的结构。 - 例如:
DELETE FROM 表名;
- 这是最基本的删除表数据的写法。语法为
-- 删除表中的所有数据,但保留表结构
DELETE FROM 表名;
- DELETE FROM 表名 WHERE 条件:
-
- 这种写法允许您根据指定的条件删除表中的数据。只有符合条件的行将被删除。
- 例如:
DELETE FROM 表名 WHERE 列名 = 值;
-- 根据条件删除表中的数据
DELETE FROM 表名 WHERE 列名 = 值;
- TRUNCATE TABLE 表名:
-
TRUNCATE TABLE语句用于快速删除表中的所有数据,但保留表的结构。与DELETE不同,TRUNCATE是一个 DDL(数据定义语言)命令,而不是 DML(数据操作语言)命令。TRUNCATE比DELETE更快,因为它不记录每个删除的行,而是直接删除整个表。- 例如:
TRUNCATE TABLE 表名;
-- 快速删除表中的所有数据,但保留表结构
TRUNCATE TABLE 表名;
- DROP TABLE 表名:
-
DROP TABLE语句用于完全删除表,包括表的结构和数据。这是一个 DDL 命令,执行后将无法恢复数据。- 例如:
DROP TABLE 表名;
-- 完全删除表,包括表的结构和数据
DROP TABLE 表名;
区别:
DELETE FROM 表名和DELETE FROM 表名 WHERE 条件是用来删除表中的数据,但保留表的结构。TRUNCATE TABLE 表名用于快速删除表中的所有数据,但保留表的结构,且比DELETE更快。DROP TABLE 表名是用来完全删除表,包括表的结构和数据,执行后无法恢复数据。
虽然 TRUNCATE TABLE 表名 和 DELETE FROM 表名 都用于删除表中的数据,但二者之间存在一些区别:
- TRUNCATE TABLE 表名;:
-
TRUNCATE TABLE是一个 DDL(数据定义语言)命令,用于快速删除表中的所有数据。TRUNCATE操作比DELETE操作更快,因为它不记录每个删除的行,而是直接删除整个表的数据。TRUNCATE操作通常无法撤消,并且会重置自增长标识符(如果有)。- 由于
TRUNCATE是 DDL 命令,因此在执行TRUNCATE TABLE时,会自动提交事务,无法在事务中回滚。
- DELETE FROM 表名;:
-
DELETE FROM是一个 DML(数据操作语言)命令,用于删除表中的数据,但保留表的结构。DELETE操作相对较慢,因为它会逐行删除数据,并记录每个被删除的行,同时会触发相关的触发器和约束。DELETE操作可以用在事务中,并且可以通过回滚事务来撤消删除操作。
虽然 TRUNCATE TABLE 表名; 和 DELETE FROM 表名; 都可以用于删除表中的数据,但在性能、事务处理和数据恢复等方面存在明显的区别。

浙公网安备 33010602011771号