MySQL中drop,delete,truncate都可以用于删除,那么它们之间的区别是什么呢?首先我们先来学习一下这三个命令。注:本篇文章主要介绍对于表的删除
一、drop命令
drop是DDL(数据定义语言),用于整张表的删除,删除的时候不仅删除了表中的数据,还删除了表结构。(也就是使用drop删除表后,数据库中便查询不到该表)
语法:drop table 表名;
注:drop命令后不可使用where等命令。
二、delete命令
delete是DML(数据操作语言),用于对表中数据的删除,不会删除表结构,也就是说即使你使用delete from 表名;将表中所有数据都删除了,该表依然存在。
delete的删除原理:在InnoDB数据库引擎下,将要删除的数据添加一个删除标记,该表的实际大小不会产生变化。
语法:delete from 表名 where 字段名 = 值;(where后面的语句可以不要,表示删除整张表的数据)
![delete删除表中元素
三、truncate命令
truncate是DDL(数据定义语言),使用该命令可以删除表中所有数据,但不会删除表结构。但是该命令不能添加查询条件。
truncate的删除原理是重新创建一个表(不包含数据),然后将原来的表删除。
语法:truncate table 表名;
四、drop VS delete VS truncate
4.1 相同点
- 都可以删除整张表中的数据
4.2 不同点
- 删除的范围:drop(删除表中所有数据及表结构)>truncate(删除表中所有数据)>=delete(删除表中所有数据或部分数据)
- 查询条件:delete可以使用查询条件进行表中数据删除,drop和truncate不可以
- 命令类型:delete属于DML,drop和truncate属于DDL
- 数据能否恢复:delete删除的数据可以恢复,但是drop和truncate删除的数据不能恢复
- 执行效率:drop>truncate>delete