【MySQL】delete、drop、truncate的区别

文章目录

    • 直接总结
      • delete
      • truncate
      • drop
    • 扩展
      • DML
      • DDL
    • 引用

直接总结

【MySQL】delete、drop、truncate的区别_第1张图片

delete

delete from 表名;

delete 操作并不是真的把数据删除掉了,而是给数据打上删除标记,标记为删除状态

truncate

truncate table 表名

为什么 truncate 只是删除了行数据,没有删除列数据(字段和索引等数据)却是 DDL 语言呢?这是因为 truncate 本质上是新建了一个表结构,再把原先的表删除掉,所以它属于 DDL 语言,而非 DML 语言。

delete是DML语句,操作完了,还可以回滚;truncate和drop是DDL语句,删除之后立即生效,不能回滚;

  • 如果表被锁住,truncate会报错;
  • 如果有外键约束,truncate也会报错;

drop

drop table 表名 [IF EXISTS] 表名

drop是DDL(数据定义语言),用于整张表的删除,删除的时候不仅删除了表中的数据,还删除了表结构。(也就是使用drop删除表后,数据库中便查询不到该表)

扩展

为了形成数据库语言,DDL和DML都是必须的。DDL和DML之间的主要区别在于:DDL有助于更改数据库的结构,而DML有助于管理数据库中的数据。

DML

(1)DML代表数据操作语言,是一种有助于检索和管理关系数据库中数据的SQL命令;会影响表中的一个或多个记录;可以回滚;
(2)常用的DML语句:insert,update,delete,select等等;

DDL

(1)DDL代表数据定义语言,是一种有助于创建数据库模式的SQL命令;会影响整个数据库或者表,不可以回滚;
(2)常用的DDL语句:create,drop,alter,truncate和rename等等;

引用

delete、drop和truncate三者区别
delete、truncate、drop的区别以及该如何选择

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