drop、delete与truncate分别在什么场景之下使用?
我们来对比一下他们的区别:
-
drop table table_name
1)属于DDL
2)不可回滚
3)不可带where
4)表内容和结构删除
5)删除速度快 -
truncate table table_name
1)属于DDL
2)不可回滚
3)不可带where
4)表内容删除
5)删除速度快 -
delete from table_name
1)属于DML
2)可回滚
3)可带where
4)表结构在,表内容要看where执行的情况
5)删除速度慢,需要逐行删除
实例演示
mysql> delete from user where id=1;
Query OK, 1 row affected (0.00 sec)
mysql> select * from user;
+----------+--------+----+
| username | salary | id |
+----------+--------+----+
| lili | 2000 | 0 |
| mimi | 5000 | 1 |
| zhao | 2000 | 2 |
+----------+--------+----+
3 rows in set (0.00 sec)
mysql> truncate table user;
Query OK, 0 rows affected (0.05 sec)
mysql> select * from user;
Empty set (0.00 sec)
总结:
参数 | 描述 |
---|---|
drop | 不再需要一张表的时候,用drop |
delete | 想删除部分数据行时候,用delete,并且带上where子句 |
truncate | 保留表而删除所有数据的时候用truncate |