【ⓂMySQL】数据库中的drop、truncate、 delete的区别
- drop直接删掉表。
- truncate删除表中数据,再插入时自增长id又从1开始。
- delete删除表中数据,可以加where字句。
delete语句会记录日志以便进行回滚操作;truncate table不会记录日志,在删除的过程中不会激活与表有关的删除触发器,执行速度快。
当表被truncate后,这个表和索引所占用的空间会恢复到初始大小,而delete操作不会减少表或索引所占用的空间。drop语句将表所占用的空间全释放掉。
truncate 只能对table;delete可以是table和view。
truncate 和delete只删除数据,而drop则删除整个表(结构和数据)。
delete语句为DML;truncate、drop是DLL
对于有FOREIGN KEY 约束引用的表,不能使用 truncate table,而应使用不带 where子句的 delete语句。由于 truncate table不记录在日志中,所以它不能激活触发器。