delete from和truncate table的区别(看这一篇就够了)


前言

在看菜鸟教程,sql教程时,发现delete from和truncate table都是删除表内容的语句,但区别是什么,特地去查了下,在这里做个记录。
delete from
truncate table


一、主要区别

  1. ‌语句类型‌:
    ‌truncate‌是‌DDL(数据定义语言)语句,用于删除表中的所有数据,但不删除表结构。‌
    ‌delete‌是DML(数据操作语言)语句,用于删除满足特定条件的记录,可以选择删除部分数据。
  2. ‌删除范围‌:
    ‌truncate‌只能删除表中的所有数据,不能删除部分数据。‌
    ‌delete‌可以删除指定条件的记录,也可以删除所有数据。
  3. 性能‌:
    ‌truncate‌通常比delete快,因为它不记录每行数据的删除操作,而是直接清空数据。
    ‌delete‌会记录每行数据的删除操作,生成事务日志,因此速度较慢。‌
  4. 事务和回滚‌:
    ‌truncate‌不是事务安全的,无法撤销,且不会记录在日志中。
    ‌delete‌是事务安全的,可以撤销,每个delete操作都会记录在日志中,以便在事务回滚时恢复数据。
  5. 触发器‌:
    ‌truncate‌不会触发任何触发器。
    ‌delete‌会触发相关的触发器。
  6. 自增ID‌:
    ‌truncate‌删除所有数据后,自增ID会重置为初始值。
    ‌delete‌删除记录后,自增ID会继续累加。

二、次要区别‌

  1. ‌日志记录‌:
    ‌truncate‌不会记录在事务日志中。
    ‌delete‌会记录在事务日志中,以便在事务回滚时恢复数据。
  2. 权限‌:
    执行‌truncate‌通常需要更多的权限,因为它是DDL语句。‌
    ‌delete‌操作则相对灵活,普通用户也可以执行。

总结

综上所述,truncate table和delete from在数据库操作中有明显的区别,选择使用哪种语句取决于具体的需求和场景。

  • 4
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值