MySQL中delete和truncate的区别

fyh 2022年02月24日 47次浏览

DELETE 命令

语法:delete from 表名 [where 条件]

-- 删除数据(避免这样写,会全部删除)
DELETE FROM `student`

-- 删除指定数据
DELETE FROM `student` WHERE id = 1

TRUNCATE 命令

作用:完全清空一个数据表,表的结构和索引约束不会变

-- 清空student表
TRUNCATE TABLE `student`

区别

  • 相同点:都能删除数据,都不会删除表结构
  • 不同点:
    • TRUNCATE 重新设置自增列,计数器归零
    • TRUNCATE 不会影响事务

DELETE 删除问题,重启数据库现象

  • InnoDB 自增列会从1开始(存在内存当中的,断电即失)
  • MyISAM 继续从上一个自增量开始(存在文件中的,不会丢失)