zoukankan      html  css  js  c++  java
  • MySQL删除表的三种方式

    drop table

    drop 是直接删除表信息,速度最快,但是无法找回数据

    例如删除 user 表:

    drop table user;
    

    truncate (table)

    truncate 是删除表数据,不删除表的结构,速度排第二,但不能与where一起使用

    例如删除 user 表:

    truncate table user;
    

    delete from

    delete 是删除表中的数据,不删除表结构,速度最慢,但可以与where连用,可以删除指定的行

    例如删除user表的所有数据

    delete from user;
    

    删除user表的指定记录

    delete from user where user_id = 1;
    

    三种方式的区别

    相同点

    • truncate和不带where子句的delete,drop都会删除表内的数据;

    • drop,truncate都是DDL语句(数据定义语言),执行后会自动提交;

    不同点

    • 语句类型:delete语句是数据库操作语言(DML),truncate,drop是数据库定义语言(DDL);

    • 效率:一般来说 drop > truncate> delete;

    • 是否删除表结构:truncate和delete 只删除数据不删除表结构,truncate 删除后将重建索引(新插入数据后id从0开始记起),而 delete不会删除索引 (新插入的数据将在删除数据的索引后继续增加),drop语句将删除表的结构包括依赖的约束,触发器,索引等;

    • 安全性:drop和truncate删除时不记录MySQL日志,不能回滚,delete删除会记录MySQL日志,可以回滚;

    • 返回值:delete 操作后返回删除的记录数,而 truncate 返回的是0或者-1(成功则返回0,失败返回-1);

    小知识

    delete 与 delete from 区别

    如果只针对一张表进行删除,则效果一样;如果需要联合其他表,则需要使用from

    delete tb1 from tb1 m where id in (select id from tb2);
    

    用法总结

    • 希望删除表结构时,用 drop;

    • 希望保留表结构,但要删除所有记录时, 用 truncate;

    • 希望保留表结构,但要删除部分记录时, 用 delete。

    赞赏码

    非学,无以致疑;非问,无以广识

  • 相关阅读:
    Longest Mountain in Array 数组中的最长山脉
    css 解决 图片 底部 3像素问题
    获取当前年月日2020-09-30格式
    vue + elememt ui table 实现滚屏效果
    滚动字
    layui 之监听 select 的变化
    正则匹配非汉字
    layui form里的select元素动态赋值无效
    layui 之 弹框重新打开 upload无效
    GPS坐标转百度坐标
  • 原文地址:https://www.cnblogs.com/lxwphp/p/15452779.html
Copyright © 2011-2022 走看看