zoukankan      html  css  js  c++  java
  • 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, 再重新导入/插入数据。
  • 相关阅读:
    第二章函数对象
    2013/10/24初学BOOST
    [转]delete 多表删除的使用
    vs2010配置boost编程环境(照抄并简化)
    游戏服务器修改状态标志位方法
    小思 引用和指针
    第二章:UNIX标准化及实现
    const指针
    第一章:UNIX基础知识
    基础算法——位运算
  • 原文地址:https://www.cnblogs.com/Dfrank/p/11839467.html
Copyright © 2011-2022 走看看