MySQL中的删除:drop,delete,truncate的区别和联系

MySQL中drop,delete,truncate都可以用于删除,那么它们之间的区别是什么呢?首先我们先来学习一下这三个命令。注:本篇文章主要介绍对于表的删除

一、drop命令

drop是DDL(数据定义语言),用于整张表的删除,删除的时候不仅删除了表中的数据,还删除了表结构。(也就是使用drop删除表后,数据库中便查询不到该表)
语法:drop table 表名;
MySQL中的删除:drop,delete,truncate的区别和联系_第1张图片

注:drop命令后不可使用where等命令。

二、delete命令

delete是DML(数据操作语言),用于对表中数据的删除,不会删除表结构,也就是说即使你使用delete from 表名;将表中所有数据都删除了,该表依然存在。
delete的删除原理:在InnoDB数据库引擎下,将要删除的数据添加一个删除标记,该表的实际大小不会产生变化。
语法:delete from 表名 where 字段名 = 值;(where后面的语句可以不要,表示删除整张表的数据)
![delete删除表中元素MySQL中的删除:drop,delete,truncate的区别和联系_第2张图片

三、truncate命令

truncate是DDL(数据定义语言),使用该命令可以删除表中所有数据,但不会删除表结构。但是该命令不能添加查询条件。
truncate的删除原理是重新创建一个表(不包含数据),然后将原来的表删除。
语法:truncate table 表名;
MySQL中的删除:drop,delete,truncate的区别和联系_第3张图片

四、drop VS delete VS truncate

4.1 相同点

  1. 都可以删除整张表中的数据

4.2 不同点

  1. 删除的范围:drop(删除表中所有数据及表结构)>truncate(删除表中所有数据)>=delete(删除表中所有数据或部分数据)
  2. 查询条件:delete可以使用查询条件进行表中数据删除,drop和truncate不可以
  3. 命令类型:delete属于DML,drop和truncate属于DDL
  4. 数据能否恢复:delete删除的数据可以恢复,但是drop和truncate删除的数据不能恢复
  5. 执行效率:drop>truncate>delete

你可能感兴趣的:(MySQL,mysql,数据库,database)