zoukankan      html  css  js  c++  java
  • 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。




  • 相关阅读:
    input输入框与元素间有间隙
    显示3行,还要省略号(这个属性比较合适WebKit浏览器或移动端(绝大部分是WebKit内核的)浏览器)
    input file 修改按钮名称
    文本溢出处理
    移动WEB前端开发资源的一些素材
    带弹性的导航栏
    带重力的公告栏
    淘宝放大镜效果
    【规范】javascript 变量命名规则(转)
    常见的仿Flash图片轮播效果
  • 原文地址:https://www.cnblogs.com/3ddan/p/10361695.html
Copyright © 2011-2022 走看看