• MySQL(六)数据的删除操作


    DELETE删除数据

    删除数据属于敏感操作,所以删除数据需要谨慎或是使用逻辑删除。

    1 全表删除

    • TRUNCATE TABLE [tab_name] 删除表中的所有数据,包括重置主键编号等。
    -- 清空表数据 
    truncate table dept_copy2;
    
    • DELETE FROM tab_name 只是将表中的数据全部删除,其他表的特征信息不变。
    -- 基本语法: 
    DELETE [LOW_PRIORITY] [QUICK] [IGNORE] FROM tbl_name 
          [WHERE where_definition] 
          [ORDER BY ...] 
          [LIMIT row_count]
    
    -- 清空表数据 
    delete from dept_copy;
    

    truncate和delete区别?

    • 命令类型
      delete是数据操作语言(DML)命令;而truncate是数据定义语言(DDL)命令。

    • 功能
      delete命令根据指定的SQL语句从表中删除单个,多个或所有记录;而truncate命令从数据库中删
      除所有记录和表结构。

    • Where子句
      delete命令支持WHERE子句,可以使用带有DELETE的where子句来过滤和删除特定记录;而,
      truncate命令不支持WHERE子句。

    • 锁定
      delete命令采用行级锁定,表中的每一行都被锁定以进行删除;truncate命令采用表级锁定,锁定
      了整个表以删除所有记录。

    • 索引视图
      delete命令可以与索引视图一起使用;而,truncate命令不能与索引视图一起使用。

    • 执行速度
      由于delete命令维护日志,因此速度较慢。但是由于truncate命令在事务日志中维护最少的日志记
      录,因此执行速度更快。

    • 表结构
      delete命令不会影响表结构,而truncate命令会从数据库中删除表结构。
      使用两种方式删除数据后,再次插入数据使用department1(使用truncate删除)主键为1,
      department2(使用delete删除)主键为11,因为虽然删除了数据,但是主键计算器没有重置。
      可以使用 show create table 表名 查看表结构,auto_increament就是计数器。

    • 事务
      delete支持事务,truncate不支持事务操作。

    2 指定条件删除(常用)
    delete from table_name where 条件;

    -- 删除department中重复的数据 
    delete from departent where id=81;
    

    3 指定删除数量
    通过 LIMIT count 可以指定删除数量,在进行大量数据删除的时候,通过这样的方式可以防止删除操作引起 CPU 的大量占用导致业务受理的阻塞。

    -- 删除5条数据 
    delete from department3 limit 5;
    
  • 相关阅读:
    Security headers quick reference Learn more about headers that can keep your site safe and quickly look up the most important details.
    Missing dollar riddle
    Where Did the Other Dollar Go, Jeff?
    proteus 与 keil 联调
    cisco router nat
    router dhcp and dns listen
    配置802.1x在交换机的端口验证设置
    ASAv931安装&初始化及ASDM管理
    S5700与Cisco ACS做802.1x认证
    playwright
  • 原文地址:https://www.cnblogs.com/duxiangjie/p/14205461.html
Copyright © 2020-2023  润新知