Truncate、delete、drop区别
一、Truncate使用
truncate user_table; 清空表的数据,但不破坏表结构
二、delete使用
delete from user_table where id = 1; 删除指定数据,要跟where条件(不过业务中大多是逻辑删除,并非物理删除)
三、drop使用(删库跑路)
drop table user_table; # 删表,没一点
drop database test_platform; # 删库,全没
补充
速度上,drop> truncate > delete
对于业务上的需求,我们删除一般会提前定义一个字段为del,通过改变他的值来模拟删除操作
目的就是不展示给用户看,其实他还在库中
- 挽救程度:
如果进行误操作的话,delete是有机会进行恢复的:也只有delete操作会进入事务,并可以回滚,truncate和drop就真的只能跑路了select * from user_table; start transaction; # 开启事务 delete from user_table where id = 1; rollback; # 回滚事务 commit; # 提交事务(提交事务后不可以回滚)