• MySQL--delete/truncate/drop


    1. delete---delete from SC where id='1001'+++删除数据,留下表的结构(又称表的定义),表的数据和索引空间不会减少
    2. truncate---truncate demo3 SC+++删除数据,留下表结构,表的数据和索引空间恢复至初始值大小
    3. drop---drop demo3 SC/drop database demo3+++删除所有,空间释放
    • truncate 和 delete 只删除数据不删除表的结构 ,drop 语句将删除表的结构被依赖的约束(constrain), 触发器(trigger), 索引(index); 依赖于该表的存储过程/函数将保留, 但是变为 invalid 状态。
    • delete 语句是 dml, 操作会放到 rollback segement 中, 事务提交之后才生效; 如果有相应的 trigger, 执行的时候将被触发。 truncate, drop 是 ddl, 操作立即生效, 原数据不放到 rollback segment 中, 不能回滚。 操作不触发 trigger。
    • delete 语句不影响表所占用的 extent, 高水线保持原位置不动。  truncate 语句缺省情况下见空间释放到 minextents 个 extent, 除非使用 reuse storage; truncate会将高水线复位(回到最开始)。

    小心使用 drop 和 truncate, 及时备份。否则哭都来不及。

    • 删除表用 drop。
    • 保留表而将所有数据删除。如果和事务无关, 用 truncate 。 如果和事务有关, 或者想触发 trigger, 还是用 delete。
    • 如果是整理表内部的碎片, 可以用 truncate 跟上 reuse stroage, 再重新导入/插入数据。
  • 相关阅读:
    京东精益敏捷教练分享:敏捷助力产品创新!
    设计规范 | 详解组件控件结构体系
    Axure响应式进阶
    通讯录表设计
    TEST1
    c#练习四单元总结
    窗体控件应用总结(1)
    .NET(c#理解)
    test2-11
    test1-1
  • 原文地址:https://www.cnblogs.com/Dfrank/p/11839467.html
Copyright © 2020-2023  润新知