在Linux中, drop,delete和truncate删除数据的有什么区别?

news/2025/3/30 1:04:38/文章来源:https://www.cnblogs.com/huangjiabobk/p/18795031

在 Linux 中,DROPDELETETRUNCATE 是用于删除数据的 SQL 操作,它们在功能、性能和对数据库的影响方面存在显著差异。以下是它们的详细对比:

1.功能
  • DROP

    • 功能:用于删除数据库对象(如表、视图、索引等)。

    • 作用范围:删除整个对象,不仅仅是数据。例如,DROP TABLE 会删除表及其所有数据、索引、约束等。

    • 语法DROP TABLE table_name;

    • 示例

      DROP TABLE employees;
      

      执行后,employees 表及其所有数据、索引、外键约束等都会被删除。

  • DELETE

    • 功能:用于删除表中的数据,但不删除表结构。

    • 作用范围:仅删除数据,表结构依然存在。

    • 语法DELETE FROM table_name WHERE condition;

      • 如果不加 WHERE 条件,则会删除表中所有数据。
    • 示例

      DELETE FROM employees WHERE age > 60;
      

      执行后,employees 表中 age > 60 的数据会被删除,但表结构和未匹配条件的数据依然存在。

  • TRUNCATE

    • 功能:用于删除表中的所有数据,但保留表结构。

    • 作用范围:清空表中的所有数据,但表结构、索引、约束等依然存在。

    • 语法TRUNCATE TABLE table_name;

    • 示例

      TRUNCATE TABLE employees;
      

      执行后,employees 表中的所有数据会被清空,但表结构、索引、约束等依然存在。

2.性能
  • DROP

    • 性能:通常性能较高,因为它直接删除了整个表对象,不需要逐行处理数据。
    • 事务日志:会产生大量的事务日志,因为需要记录表的删除操作。
    • 回滚:如果在事务中执行 DROP,可以回滚,但回滚成本较高。
  • DELETE

    • 性能:性能较低,尤其是删除大量数据时。因为它需要逐行处理数据,并且会触发触发器(如果有)。
    • 事务日志:会产生大量事务日志,因为需要记录每一行的删除操作。
    • 回滚:可以回滚,因为每行的删除操作都被记录在事务日志中。
  • TRUNCATE

    • 性能:性能较高,因为它不会逐行处理数据,而是直接清空表中的数据。
    • 事务日志:事务日志较少,因为它不会记录每一行的删除操作,而是记录表的清空操作。
    • 回滚:在某些数据库中,TRUNCATE 是不可回滚的(如 MySQL),但在其他数据库中(如 PostgreSQL),TRUNCATE 是可以回滚的。
3.对数据库的影响
  • DROP

    • 影响:删除整个表对象,包括数据、索引、约束等。如果表与其他表有外键关联,可能需要先删除外键约束。
    • 适用场景:当不再需要某个表时,使用 DROP
  • DELETE

    • 影响:仅删除数据,表结构和约束等依然存在。如果表中有触发器,DELETE 会触发这些触发器。
    • 适用场景:需要删除部分数据或根据条件删除数据时。
  • TRUNCATE

    • 影响:清空表中的所有数据,但保留表结构、索引和约束。不会触发触发器。
    • 适用场景:需要快速清空表中的所有数据,但保留表结构时。
4.事务支持
  • DROP
    • 事务支持:支持事务,但回滚成本较高。
  • DELETE
    • 事务支持:支持事务,可以回滚。
  • TRUNCATE
    • 事务支持:在某些数据库中(如 MySQL)不支持事务回滚,在其他数据库中(如 PostgreSQL)支持事务回滚。
5.我的总结
  • DROP:删除整个表对象,性能高,但不可恢复。
  • DELETE:删除表中的数据,支持条件删除,性能低,但可以回滚。
  • TRUNCATE:清空表中的所有数据,性能高,不触发触发器,但可能不可回滚(取决于数据库)。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/906417.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Netty源码—7.ByteBuf原理二

大纲 9.Netty的内存规格 10.缓存数据结构 11.命中缓存的分配流程 12.Netty里有关内存分配的重要概念 13.Page级别的内存分配 14.SubPage级别的内存分配 15.ByteBuf的回收9.Netty的内存规格 (1)4种内存规格 (2)内存申请单位(1)4种内存规格 一.tiny:表示从0到512字节之间的内存大…

一文速通Python并行计算:03 Python多线程编程-多线程同步(上)—基于互斥锁、递归锁和信号量

在 Python 多线程编程中,线程同步是确保多个线程安全访问共享资源的关键技术。本篇文章介绍了互斥锁(Lock)、递归锁(RLock) 和 信号量(Semaphore) 的概念与应用。互斥锁用于防止多个线程同时修改数据,递归锁适用于嵌套锁定场景,而信号量则限制同时访问资源的线程数。一…

K3D|高效创建轻量级 k8s 集群 (run in dokcer)

k3d 是一个轻量级的包装器,用于在 docker 中运行 k3s(Rancher Lab 的最小 Kubernetes 发行版)什么是 K3S 官网:https://k3s.io/ 指南:https://rancher.com/docs/k3s/latest/en/ 中文版指南:https://docs.rancher.cn/docs/k3s/_index/ K3s 是一个轻量级的 Kubernetes 发行…

记录一下安装适用于intel 显卡的torch

支持的硬件和驱动如下按照表格安装好驱动。使用conda创建好虚拟环境(Python 3.9, 3.10, 3.11, 3.12, 3.13.)后,我的显卡是arc A580# For hardware listed in the table above, other than Intel Core™ Ultra Series 2 Mobile Processors (Arrow Lake-H), use the commands …

AP CSA FRQ Q2 Past Paper 五年真题汇总 2023-2019

Author(wechat): bigshuang2020 ap csa tutor, providing 1-on-1 tutoring. 国际教育计算机老师, 擅长答疑讲解,带学生实践学习。 热爱创作,作品:ap csa原创双语教案,真题梳理汇总, AP CSA FRQ专题冲刺, AP CSA MCQ小题狂练。2023 FRQ Q2 Sign This question involves met…

RabbitMQ的核心组成部分即分发模式

核心概念:Server:又称Broker ,接受客户端的连接,实现AMQP实体服务。 安装rabbitmq-serverConnection:连接,应用程序与Broker的网络连接 TCP/IP/ 三次握手和四次挥手Channel:网络信道,几乎所有的操作都在Channel中进行,Channel是进行消息读写的通道,客户端可以建立对各…

RabbitMQ的核心组成部分

核心概念:Server:又称Broker ,接受客户端的连接,实现AMQP实体服务。 安装rabbitmq-serverConnection:连接,应用程序与Broker的网络连接 TCP/IP/ 三次握手和四次挥手Channel:网络信道,几乎所有的操作都在Channel中进行,Channel是进行消息读写的通道,客户端可以建立对各…

Oracle11备份方案

备份方案(一) 1.1.备份脚本#!/bin/bash # Oracle 11g 业务库备份脚本# 配置部分 ORACLE_SID=orcl # 数据库实例名(按实际修改) BACKUP_DIR=/opt/oracle/backups # 备份存储目录 LOG_DIR=/opt/oracle/logs # 日志目录 KEEP_COPIES=7 # 保…

20242909 2024-2025-2 《网络攻防实践》实践四报告

20242909 2024-2025-2 《网络攻防实践》实践四报告 1.实践内容 在网络攻防环境中利用攻击机对靶机分别进行ARP欺骗攻击、ICMP重定向攻击、SYN FLOOD攻击和TCP RST攻击以及TCP会话劫持攻击等网络攻击方式。上述常见的网络攻击技术解析如下: 1.1 ARP欺骗攻击 ARP欺骗是通过伪造A…

20242203许振宇 2024-2025-2 《Python程序设计》实验二报告

20242203 2024-2025-2 《Python程序设计》实验二报告 课程:《Python程序设计》 班级: 2422 姓名: 许振宇 学号:20242203 实验教师:王志强 实验日期:2024年3月26日 必修/选修: 公选课 1.实验内容 1.设计并完成一个完整的应用程序,以完成加减乘除模等运算。 2.尝试设计一…

Grafana的基于角色的访问控制RBAC

创建全局用户设置用户权限创建团队团队添加成员Dashboard的权限管理 在任意一个Dashboard设置中

AccessibilityService微信自动化节点元素混淆问题解决

问题背景 AccessibilityService获取微信版本8.0.52以上的节点元素时信息会被混淆打乱,导致无法正常执行AccessibilityService自动化逻辑,这个问题直接影响自动化脚本对于后面微信版本的兼容。 解决 在自动化开源库Assists有网友提了这个关于微信的issues,最终也是他提供的解…