用法:
1、当不再使用该表时,使用drop
2、当仍要保留该表,但是要删除所有记录时,用truncate
3、当要删除部分记录或者担心可能需要回滚,使用delete
删除程度从强到弱排序如下:
1、drop table tb;
drop是直接将表格删除,无法找回。
例如删除user表:
drop table user;
2、truncate table tb;
truncate是删除表中的所有数据,不能与where一起使用
例如删除user表中所有数据:
truncate table user;
3、delete from tb (where)
delete也是删除表中数据,可以与where连用,删除指定数据
删除user表中所有数据:
delete from user;
删除user表中id为2的数据:
delete from user where id=2;
truncate和delete的区别:
1、事务
truncate
删除后不记录mysql日志,因此不可以rollback回滚操作,也不可以恢复数据;
delete
可以rollback回滚数据
原因:
truncate
相当于保留原mysql表的结构,重新创建了这个表,所有状态都是新的;
delete
的效果相当于是一行一行的删除,因此可以rollback
2、效果
效率上truncate
比delete
快,而且truncate
删除后将重建索引(新插入数据的id从0开始),而delete
不会删除索引(新插入的数据的id将在删除数据的索引后继续添加)
3、truncate不会触发任何delete触发器
4、返回值
delete操作后返回删除的记录数;
truncate返回的是0或者-1(删除数据成功则返回0,失败则返回-1)