DROP:

DROP TABLE test;

TRUNCATE:

TRUNCATE test;

DELETE:

1、删除指定数据

删除表test中年龄等于30的且国家为US的数据

DELETE FROM test WHERE age=30 AND country='US';

仅删除表test内的所有内容,保留表的定义,不释放空间。

DELETE FROM test 或者 TRUNCATE test;

相同点

truncate 和不带 where 子句的 delete, 以及 drop 都会删除表内的数据。

不同点:

  • 1. truncate 和 delete 只删除数据不删除表的结构(定义) ,drop 语句将删除表的结构被依赖的约束(constrain), 触发器(trigger), 索引(index); 依赖于该表的存储过程/函数将保留, 但是变为 invalid 状态。
  • 2.delete 语句是 dml, 这个操作会放到 rollback segement 中, 事务提交之后才生效; 如果有相应的 trigger, 执行的时候将被触发。 truncate, drop 是 ddl, 操作立即生效, 原数据不放到 rollback segment 中, 不能回滚。 操作不触发 trigger。
  • 3.delete 语句不影响表所占用的 extent, 高水线(high watermark)保持原位置不动。 显然 drop 语句将表所占用的空间全部释放 。 truncate 语句缺省情况下见空间释放到 minextents 个 extent, 除非使用 reuse storage; truncate会将高水线复位(回到最开始)。
  • 4.速度:一般来说: drop > truncate > delete 。
  • 5.安全性: 小心使用 drop 和 truncate, 尤其没有备份的时候。否则哭都来不及。

最后

使用上, 想删除部分数据行用 delete, 注意带上 where 子句。 回滚段要足够大。

想删除表, 当然用 drop。

想保留表而将所有数据删除。如果和事务无关, 用 truncate 即可。 如果和事务有关, 或者想触发 trigger, 还是用 delete。

如果是整理表内部的碎片, 可以用 truncate 跟上 reuse stroage, 再重新导入/插入数据。

更多相关文章

  1. android上一些方法的区别和用法的注意事项
  2. Android中的FILL_PARENT与WRAP_CONTENT的区别
  3. [Android] ACTION_GET_CONTENT与ACTION_PICK的区别
  4. android上一些方法的区别和用法的注意事项
  5. linearLayout 和 relativeLayout的属性区别
  6. Android(安卓)-- Android(安卓)JUint 与 Sqlite
  7. android 当系统存在多个Launcher时,如何设置开机自动进入默认的La
  8. Android(安卓)SQLiteDatabase的使用
  9. 【Android】loadData与loadDataWithBaseURL的区别

随机推荐

  1. Linux如何重置root密码-CentOS6,CentOS7,
  2. 遇见一只黑猫,她说程序员都是骗子
  3. 超全的pandas数据分析常用函数总结:上篇
  4. 10 行 Python 代码,批量压缩图片 500 张,简
  5. 聊聊 Python 的内置电池
  6. 一文读懂 Serverless,将配置化思想复用到
  7. 当 Python 中混进一只薛定谔的猫……
  8. 为什么 Python 3 把 print 改为函数?
  9. 如何用python制作动态二维码,来哄女朋友开
  10. MySQL 8 OCP(1Z0-908)认证考试题库原题(第