• MySQL-删除对比


    drop,delete与truncate的区别
    1.DELETE 语句每次删除一行,并在事务日志中为所删除的每行记录一项。以便回滚。
      TRUNCATE TABLE 删除表中的所有行,但表结构及其列、约束、索引等保持不变。
      不记录在日志中,所以它不能激活触发器。
      drop直接删掉表。
     
    2.表和索引所占空间。
      drop > truncate > delete
      当表被TRUNCATE 后,这个表和索引所占用的空间会恢复到初始大小,
      DELETE操作不会减少表或索引所占用的空间。
      drop语句将表所占用的空间全释放掉。
     
    3.应用范围。
      TRUNCATE 只能对TABLE;DELETE可以是table和view
      TRUNCATE 和DELETE只删除数据,而DROP则删除整个表(结构和数据)。
      truncate与不带where的delete :只删除数据,而不删除表的结构(定义)
      drop语句将删除表的结构被依赖的约束(constrain),触发器(trigger)索引(index);
      依赖于该表的存储过程/函数将被保留,但其状态会变为:invalid。
     
    4.作用失效
      delete语句为DML(data maintain Language),这个操作会被放到 rollback segment中,事务提交后才生效。
      如果有相应的 tigger,执行的时候将被触发。
      truncate、drop是DLL(data define language),操作立即生效,
      原数据不放到 rollback segment中,不能回滚

    5.选择
      要删除部分数据行采用delete+where
      要删除表用drop;
      若想保留表而将表中数据删除:
      如果于事务无关,用truncate即可实现。
      如果和事务有关,或老师想触发trigger,还是用delete。




  • 相关阅读:
    MySQL之事务
    Java岗 面试考点精讲(基础篇02期)
    Java岗 面试考点精讲(基础篇01期)
    Tomcat热部署
    如何连接局域网的数据库
    Mybatis逆向工程中的 mybatis-generator:generate 代码生成器的使用
    如何把转入成功的XXX.sql导入到自己的数据库里
    JSP知识总结
    Servlet
    Spring学习
  • 原文地址:https://www.cnblogs.com/3ddan/p/10361695.html
Copyright © 2020-2023  润新知