常用的三种删除方式:通过 delete、truncate、drop 关键字进行删除;这三种都可以用来删除数据,但场景不同。
DELETE FROM 与 TRUNCATE TABLE区别
TRUNCATE TABLE和DELETE FROM在数据库管理中都用于删除表中的数据,但它们在执行方式、使用场景、性能影响以及后续操作方面有所不同。
以下是两种语句的具体区别:
语句格式
DELETE FROM可以带WHERE子句指定删除条件;
TRUNCATE TABLE则不支持带条件删除,它通常用于删除表中的所有记录。
DELETE FROM:语句格式:
DELETE FROM 表名 [WHER 条件];
TRUNCATE TABLE: 语句格式:
TRUNCATE TABLE 表名;
DROP TABLE:语句格式:
DROP TABLE 表名;
数据释放和空间回收
DELETE FROM删除数据后,不会释放表所占用的内存空间,且删除操作可撤销;
TRUNCATE TABLE删除数据后,会释放表所占用的内存空间,且删除操作不可撤销。
执行速度
DELETE FROM是一种逐行删除的操作,执行速度较慢;
TRUNCATE TABLE通过释放存储表数据所用的数据页来删除数据,执行速度快。
执行速度:一般来说:
drop
>truncate
>delete
触发器和使用场景
DELETE FROM会激发触发器;
TRUNCATE TABLE不会激发触发器。
因此,如果表定义了AFTER DELETE触发器,使用DELETE FROM可能会更合适。TRUNCATE TABLE通常用于快速清空表中的数据,尤其是在需要重置自增主键或表统计信息时。而DELETE FROM适用于需要逐个删除表中某些特定行的情况。
自增主键和标识
DELETE FROM不会重置自增主键,表中的自增主键仍然会继续递增;
TRUNCATE TABLE会重置自增主键
,下一次插入数据时,自增主键从初始值开始。
事务处理
DELETE FROM可以事务回滚;
TRUNCATE TABLE不能事务回滚。
相同点
DELETE 与TRUNCATE都是仅会删除表数据,不会删除表结构,删除后表可以使用
应用场景
一般使用场景
- 如果一张表确定不再使用,我们使用
drop
来操作 - 如果只是删表中的全部数据,一般使用
truncate
- 如果删除的是表中的部分数据,一般使用
delete
SQL语句示例
/*创建表*/
CREATE TABLE 删除的应用 (
id INT ,
字段1 VARCHAR(50) )
/*插入多行(条)数据*/
INSERT INTO 删除的应用 (id, 字段1)
VALUES (1002, '男'),
(1003, '女'),
(1004, '男');
/*删除id等于1002的数据行*/
DELETE FROM 删除的应用
WHERE id =1002
/*删除表中全部数据,且不可恢复*/
TRUNCATE TABLE 删除的应用
/*删除整个表*/
DROP TABLE 删除的应用
相关文章
#如何彻底删除数据库数据?#
请登录后查看评论内容