当前位置: 首页 > news >正文

Drop和Truncate与Delete的区别

1.Drop

DROP TABLE test;

删除表test,并释放空间,将test删除的一干二净。(结构也被完全删除)

 

2.Truncate

TRUNCATE test;

删除表test里的内容,并释放空间,但不删除表的定义,表的结构还在。

 

3.Delete

1>、删除指定数据

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

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

2>、删除整个表

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

DELETE FROM test 或者 TRUNCATE test;

truncate table 命令将快速删除数据表中的所有记录,但保留数据表结构。这种快速删除与 delete from 数据表的删除全部数据表记录不一样,
delete 命令删除的数据将存储在系统回滚段中,需要的时候,数据可以回滚恢复,而truncate 命令删除的数据是不可以恢复的

相同点

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, 再重新导入/插入数据。

 

转载于:https://www.cnblogs.com/chenze-Index/p/10169132.html

相关文章:

  • bzoj2595: [Wc2008]游览计划
  • C# 很少人知道的科技
  • asp.net——公共帮助类
  • 什么是二次开发
  • C++ 解析json串
  • 系统管理员需知的 16 个 iptables 使用技巧
  • $Django python中使用redis, django中使用(封装了),redis开启事务(管道)
  • 《HelloGitHub》第 33 期
  • grep-学习记录
  • 面试题30:包含 min 函数的栈
  • intellij中导入java包
  • Java模仿http请求工具类
  • 数据结构之链表 给定一个链表,判断链表中是否有环。
  • 有点颓废
  • JS判断单、多张图片加载完成
  • 5、React组件事件详解
  • Mithril.js 入门介绍
  • Node.js 新计划:使用 V8 snapshot 将启动速度提升 8 倍
  • react 代码优化(一) ——事件处理
  • SpringBoot 实战 (三) | 配置文件详解
  • Twitter赢在开放,三年创造奇迹
  • v-if和v-for连用出现的问题
  • 电商搜索引擎的架构设计和性能优化
  • 官方新出的 Kotlin 扩展库 KTX,到底帮你干了什么?
  • 前端_面试
  • 问题之ssh中Host key verification failed的解决
  • 限制Java线程池运行线程以及等待线程数量的策略
  • 学习笔记TF060:图像语音结合,看图说话
  • 1.Ext JS 建立web开发工程
  • 3月27日云栖精选夜读 | 从 “城市大脑”实践,瞭望未来城市源起 ...
  • 从如何停掉 Promise 链说起
  • 翻译 | The Principles of OOD 面向对象设计原则
  • 没有任何编程基础可以直接学习python语言吗?学会后能够做什么? ...
  • ​中南建设2022年半年报“韧”字当头,经营性现金流持续为正​
  • #!/usr/bin/python与#!/usr/bin/env python的区别
  • ## 临床数据 两两比较 加显著性boxplot加显著性
  • #android不同版本废弃api,新api。
  • (2)关于RabbitMq 的 Topic Exchange 主题交换机
  • (AngularJS)Angular 控制器之间通信初探
  • (C#)获取字符编码的类
  • (zz)子曾经曰过:先有司,赦小过,举贤才
  • (动态规划)5. 最长回文子串 java解决
  • (二)什么是Vite——Vite 和 Webpack 区别(冷启动)
  • (附源码)ssm高校志愿者服务系统 毕业设计 011648
  • (牛客腾讯思维编程题)编码编码分组打印下标(java 版本+ C版本)
  • (十二)springboot实战——SSE服务推送事件案例实现
  • (太强大了) - Linux 性能监控、测试、优化工具
  • .net core 6 集成 elasticsearch 并 使用分词器
  • .NET 程序如何获取图片的宽高(框架自带多种方法的不同性能)
  • .NET 的程序集加载上下文
  • .net 简单实现MD5
  • .Net 转战 Android 4.4 日常笔记(4)--按钮事件和国际化
  • .Net程序帮助文档制作
  • .net通用权限框架B/S (三)--MODEL层(2)
  • .vue文件怎么使用_vue调试工具vue-devtools的安装