zoukankan      html  css  js  c++  java
  • 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;
    
  • 相关阅读:
    关于slot标签的使用
    vue组件
    template和component的理解(待更正)
    input 的属性autocomplete
    关于render: h => h(App)和components: { App }的区别
    关于vue的简单知识
    获取页面跳转携带的参数
    关于跨域的简单想法(此想法是错误的,特此备注)
    关于jq建立类似与双向绑定的函数
    关于jq将一个页面引入另一个页面,类似与组件化的解决方案
  • 原文地址:https://www.cnblogs.com/duxiangjie/p/14205461.html
Copyright © 2011-2022 走看看