赞
踩
两者都可以删除表中的数据,但是本质上是有区别的,两者使用方法如下:
- --删除表中所有数据
- DELETE FROM table_name;
- --删除表中部分符合条件的数据
- DELETE FROM table_name WHERE 【】;
-
- --删除表中所有数据
- TRUNCATE TABLE table_name;
delete
:属于 DML(数据操作语言) 范畴truncate
:属于 DDL(数据定义语言) 范畴
- delete:操作对象是表中的每行数据,属于行级别。可以通过在后面添加where条件删除部分数据。
- truncate:操作对象是表,不能加where条件,一执行就是删除了整个表。
- delete:删除的行数据是不释放空间的,每删除一行数据,就在事务日志中为删除的那行数据做一项记录,因此可对delete操作进行回滚(roll back);如果表id是递增式的话,那么表数据的id就可能不是连续的;
- truncate:是通过释放存储表数据所用的数据页来删除数据,并且只在事务日志中记录页的释放,所以删除不能回滚。
- delete:逻辑删除,走事务,有binlog记录,必然效率慢
- truncate:物理删除,直接删除存储数据的数据页,不走事务没有日志记录,必然快。
- delete:可以通过sql语句,根据外键有序的删除本表和相关表中的数据。比如删除部门表中的数据,也可以吧用户表中的数据关联删除。
- truncate:存在外键约束,则删除失败。比如员工表关联了部门表,即使员工表中没有数据,只要外键关联存在,部门表就删不掉。
慎用、慎用 truncate,删除一些备份表,和测试表也要慎用,别写错表名了。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。