首页 > 其他分享 >delete,drop,truncate的区别

delete,drop,truncate的区别

时间:2024-12-29 10:59:22浏览次数:8  
标签:truncate 删除 drop 操作 存储空间 delete

  1. delete操作

    • 功能delete是用于从表中删除数据行的操作。它是一种数据操作语言(DML)语句,允许你根据指定的条件删除表中的部分或全部数据。例如,如果你想从一个名为employees的表中删除所有年龄大于 60 岁的员工记录,可以使用以下 SQL 语句:
      • DELETE FROM employees WHERE age > 60;
    • 对事务的支持delete操作通常是在事务的环境下执行的,这意味着它可以被回滚(rollback)。如果在一个事务中执行了delete操作,并且在事务提交(commit)之前发生了错误或者需要撤销操作,就可以使用回滚操作来恢复被删除的数据。例如,在一个存储过程中,先执行delete操作,然后在后续的代码中发现条件有误,就可以回滚整个事务来恢复数据。
    • 对存储空间的影响:当使用delete删除数据行时,被删除的数据所占用的存储空间不会立即释放。数据库管理系统(DBMS)会在内部标记这些被删除的行,这些行所占用的空间可能会在后续的操作(如插入新数据、数据库优化操作等)中被重新利用。例如,在一个频繁插入和删除数据的表中,使用delete操作后,表的存储空间大小可能不会立即减小,直到执行了数据库的空间整理操作。
  2. drop操作

    • 功能drop主要用于删除数据库对象,如删除表、视图、索引、存储过程等。当你使用drop table语句时,会将整个表及其所有数据、索引、约束等全部删除。例如,要删除名为customers的表,可以使用以下语句:
      • DROP TABLE customers;
    • 对事务的支持drop操作通常是立即生效的,并且在大多数数据库系统中,drop操作一旦执行,就无法直接回滚。它是一种数据定义语言(DDL)语句,与数据库的结构定义相关,不像delete那样在事务的控制范围内。例如,如果你不小心执行了drop table语句,想要恢复数据会非常困难,需要依赖数据库备份等手段。
    • 对存储空间的影响drop操作会立即释放被删除对象所占用的存储空间。当删除一个表时,表所占用的磁盘空间会被数据库系统标记为可重新分配,这些空间可以被其他数据库对象使用。例如,在磁盘空间紧张的情况下,删除一些不再需要的大型表可以快速释放存储空间。
  3. truncate操作

    • 功能truncate用于快速删除表中的所有数据,但保留表的结构(如列定义、索引定义、约束等)。它类似于delete语句不带WHERE条件的情况,但在实现方式和性能上有所不同。例如,对于一个名为orders的表,可以使用以下语句来清空所有数据:
      • TRUNCATE TABLE orders;
    • 对事务的支持truncate操作在某些数据库系统中可能不受事务控制或者是自动提交的,这意味着它可能无法像delete那样方便地进行回滚。不过不同的数据库对truncate的事务处理方式可能不同。例如,在 Oracle 数据库中,truncate操作是自动提交的,不能直接回滚;而在 SQL Server 中,在某些情况下可以在事务范围内对truncate操作进行一定程度的控制。
    • 对存储空间的影响:与delete不同,truncate操作通常会立即释放表中数据所占用的存储空间。它会重置表的存储结构,使得表的数据空间被清空,就好像重新创建了一个只有结构没有数据的表一样。例如,在一个需要频繁清空和重新加载数据的表中,使用truncate操作可以更高效地利用存储空间。

标签:truncate,删除,drop,操作,存储空间,delete
From: https://blog.csdn.net/pxyxyxy/article/details/144801920

相关文章

  • CSS系列(42)-- Backdrop Filter详解
    前端技术探索系列:CSSBackdropFilter详解......
  • C++中管理动态内存:析构函数中的`delete`使用指南
    在C++编程中,正确管理动态分配的内存是至关重要的。不当的内存管理可能导致内存泄漏、野指针和重复释放等问题。本文将详细介绍如何在C++类中使用delete和delete[]来释放动态分配的资源,并提供一些最佳实践,以确保资源被安全、有效地管理。1.析构函数中的delete当类的成员变......
  • 【Source Insight 快捷功能:多行注释和反注释、add、modify、delete、#if0_#endif】
    SourceInsight快捷功能:多行注释和反注释、#if0_#endif、add、modify、deleteSourceInsight(SI)快捷功能:多行注释和反注释#if0_#endifaddmodifydelete第一步:关闭所有SIproject。然后点击Project-->openproject-->选择Base,添加代码。第二步然后点......
  • 如何给 el-dropdown 的 command 事件传递多个参数
    问题如上图所示,可获得点击的command,但是如果页面上有多个el-dropdown,就无法获取当前点击的el-dropdown的相关数据。解决网上搜索的解决办法是:给el-dropdown-item绑定command属性时,返回函数(该函数返回一个对象,对象内包含command和要传递的参数)。我认为上述写法有些......
  • 深度学习基础理论————"优化"方法(归一化/dropout)
    深度学习基础理论————"优化"方法(归一化/dropout)1、归一化方法(LayerNorm/BatchNorm/GroupNorm)归一化层是深度神经网络体系结构中的关键,在训练过程中确保各层的输入分布一致,这对于高效和稳定的学习至关重要。归一化技术的选择(Batch,Layer,GroupNormalization)会显著影响训......
  • Drag and Drop API 实现 JavaScript 中的原生拖放功能
    理解什么是拖放,我们先做个简单的实验。鼠标移动到页面左上角“CSDN”图片上方,点击左键不放开,拖动鼠标,发现图片随着鼠标移动,松开鼠标时,图片消失。一、拖放(DragandDrop)有什么作用?在JavaScript中,拖放(DragandDrop)是一种用户界面交互模式,允许用户通过鼠标选择、拖动和......
  • Response has been truncated
    在开发这篇时,MVCAngularjsVueJavascript显示图片https://www.cnblogs.com/insus/p/18586192图片数据是Base64数据流。在大理数据流从数据库传入客户端,加上客户端的浏览器有限流设定。解决这个问题,得需要配置客户端的浏览器限流问题。 如FireFox浏览器,在地址栏输入about......
  • 第三章 3.12 dropout 和 正则化 克服过拟合
    代码:#https://github.com/PacktPublishing/Modern-Computer-Vision-with-PyTorch#https://github.com/PacktPublishing/Modern-Computer-Vision-with-PyTorch###################ChapterThree########################################第三章读取数据集并显示fro......
  • 海山数据库(He3DB)源码解读:T_DropRoleSetStmt原理浅析
    一、概述  DropRoleStmt表示删除角色的DDL语句。。二、DropRole命令的执行流程PostgresMainexec_simple_query→执行简单的SQL查询;StartTransactionCommand→开始事务;pg_parse_query→解析为内部的抽象语法树(AST);PortalRunstandard_ProcessUtility→权限......
  • new与delete原理剖析
    一、operatornew与operatordelete函数    C++除了提供【new】和【delete】关键字来进行动态内存管理,还提供了【operatornew】与【operatordelete】函数来进行动态内存管理    【new】和【delete】是用户进行动态内存申请和释放的操作符,【operatornew】......