【狂神】MySQL - Delete 和 Truncate 的区别

2023-11-15

1. DELETE 命令

语法 : delete from 表名 [where 条件]

-- 删除数据 (避免这样写, 会全部删除)
DELETE FROM `student`;

-- 删除指定数据
DELETE FROM `student` WHERE id = 1;

2. TRUNCATE 命令

作用 : 完全清空一个数据库表, 表的结构和索引约束不会变.

-- 清空 student 表
TRUNCATE `student`;

3. DELETE 和 TRUNCATE 的区别

相同点 : 都能删除数据, 都不会删除表结构

不同点 : 

  • TRUNCATE  会重新设置自增列, 自增列计数器会归零
  • TRUNCATE 不会影响事务

测试数据 (测试自增列计数器归零区别) : 

CREATE TABLE `test`(
	`id` INT(4) NOT NULL AUTO_INCREMENT,
	`coll` VARCHAR(20) NOT NULL,
	PRIMARY KEY(`id`)
)ENGINE=INNODB DEFAULT CHARSET=utf8;

INSERT INTO `test`(`coll`) VALUE('1'),('2'),('3');

DELETE FROM `test`  -- 不会影响自增

TRUNCATE TABLE `test` -- 自增会归零

第三个区别 (了解即可)

DELETE 删除数据存在一些问题, 需要重启数据库(netstart), 观察现象 :

  • 对于数据库引擎是 InnoDB 的, 自增列会重新从 1 开始 (即数据存在内存中, 断电即失)
  • 对于数据库引擎是 MySWAM 的, 会继续从上一个自增量开始 (存在文件中的, 不会丢失)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【狂神】MySQL - Delete 和 Truncate 的区别 的相关文章

  • 在 MySQL 中执行触发器需要什么权限?

    我发现 MySQL 手册中对 DEFINER 的解释令人困惑 因此我不确定运行应用程序的 执行用户 需要什么权限 为了安全起见 我喜欢将 执行用户 限制为所需的最少权限 我知道触发器 存储过程的创建者需要超级权限 但是 执行用户 是否也需要
  • 我应该如何审核 MySQL 表中的更改(使用 MySQL 4)?

    我被要求审核 MySQL 表中的任何 所有更改 有谁知道有什么工具可以帮助我做到这一点 还是我需要编写自己的解决方案 如果我编写自己的审计 我最初的想法是制作一个单独的表并在 PHP 代码中构建一系列更改 类似 fieldname1 gt
  • 在 Laravel 中按数据透视表 create_at 排序

    在我的数据库中 我有以下表格 courses id 名称 创建时间 更新时间 students id 名称 创建时间 更新时间 课程 学生 id course id student id created at updated at 我正在尝
  • 如何比较行内的重叠值?

    我似乎对这个 SQL 查询有问题 SELECT FROM appts WHERE timeStart gt timeStart AND timeEnd lt timeEnd AND dayappt boatdate 时间格式为军用时间 物流
  • Python MySQL 操作错误:1045,“用户 root@'localhost' 的访问被拒绝

    我试图通过以下方式从我的 python 程序访问数据库 db mysql connect host localhost user Max passwd maxkim db TESTDB cursor db cursor 但是 我在第一行代码
  • MySQL 字符串中的第二个(或第三个)索引

    查找字符串中第三个空格的索引的最简单方法是什么 我的目标是得到CCC在此空格分隔的列表之外 AAAA BBBB CCCC DDDD EEE 其中A B和D是固定长度 C是可变长度 E F G是可选的 在Java中 我会使用indexof 起
  • 如何将 mysql 转换为 mysqli? [复制]

    这个问题在这里已经有答案了 我厌倦了将 mysql 转换为 mysqli 但似乎收到了很多错误和警告 连接到数据库没有问题 但其余代码似乎错误 我做错了什么 sql
  • 是否可以将新表和旧表从触发器传递到 MySQL 中的过程中?

    是否可以将新表和旧表从触发器传递到 MySQL 中的过程中 我怀疑不会 因为没有过程接受的表这样的数据类型 有什么可能的解决方法吗 理想情况下它看起来像这样 CREATE TRIGGER Product log AFTER UPDATE O
  • 在 Mysql 上使用 EntityManager JPA 运行脚本

    我正在尝试运行脚本 sql 文件 但由于我尝试了多种方法 因此出现多个错误 这是我的主要 sql 脚本 INSERT INTO Unity VALUES 11 paq 0 2013 04 15 11 41 37 Admin Paquete
  • 自动删除主键序列中的间隙

    我正在创建一个网页 该网页根据用户操作将数据存储到 MySQL 数据库中 数据库有很多行 行的主键是列 rowID 它只是按顺序对行进行编号 例如 1 2 3 4 用户可以选择删除行 问题是当用户删除最后一行以外的行时 rowID 中有一个
  • 计算 mysql 数据库行数的最佳方法

    在遇到 mysql 查询加载时间慢的问题后 我现在正在寻找计算行数的最佳方法 我曾经愚蠢地使用过mysql num rows 函数来做到这一点 现在意识到这是最糟糕的方法 我实际上正在制作一个分页来用 PHP 制作页面 我找到了几种计算行数
  • 如何在 codeigniter 查询中使用 FIND_IN_SET?

    array array classesID gt 6 this gt db gt select gt from this gt table name gt where array gt order by this gt order by q
  • 我可以将 MAMP (MySQL) 或 XAMPP (MySQL) 与 Ruby on Rails 3 一起使用吗?

    我可以将 MAMP MySQL 或 XAMPP MySQL 与 Ruby on Rails 3 一起使用吗 我从 MYSQL com 安装了 MySQL 但遇到了很多麻烦 所以我喜欢使用 MAMP XAMPP Mysql 有人这样做吗 另外
  • 在上下文中提取搜索字符串

    我正在尝试执行 MySQL 查询 在上下文中提取搜索字符串 因此 如果搜索是 mysql 我想从 body 列返回类似的内容 下载后只需几分钟MySQL安装程序即可使用 这就是我现在得到的 但它不起作用 因为它只是从正文字段中获取前 20
  • 如何使用wireshark清晰捕获mysql查询sql

    因为我们使用远程开发Mysql服务器 所以不能轻易检查查询sql 如果使用本地服务器可以tail f general log file查看调用某个http接口时执行了哪些sql 所以我安装了一个wireshark捕获这些从本地发送的查询sq
  • Laravel 5.4 升级 - 违反完整性约束 - 列不能为空

    奇怪的是 所有这些都在 5 2 中工作 但我不知道可以改变什么来实现这一点 下面是错误和正在插入的数组 SQLSTATE 23000 Integrity constraint violation 1048 Column gender can
  • MySQL Python 关于重复键更新值

    我正在研究使用 python 将 JSON 数据上传到 MySQL 我需要在插入语句中包含 ON DUPLICATE KEY UPDATE VALUES 但在 Python 中遇到了问题 如果我运行以下代码 一切正常 import json
  • 从 Grib 天气模型中提取数据

    我已经下载了grib1模型数据来自GFS http en wikipedia org wiki Global Forecast System 我使用的是 Mac OS X 并且能够构建wgrib2文件来自NOAA http en wikip
  • 无法在 mysql-apt-config [Ubuntu 14.04] 中选择“确定”

    我使用的是 Ubuntu 14 04 sudo apt get update总是给我这个选项来配置 mysql apt config 我尝试选择版本 按 tab gt 在 确定 上突出显示的键 按 Enter 但没有任何反应 它再次返回并突
  • PDO语法错误

    我在一个项目中使用 PDO 但提交时出现语法错误 这是我的代码

随机推荐

  • 免费获取JetBrains一年全家桶

    原文链接 https blog csdn net li5672 article details 110231645 登录Github Education 点击Get benefits 点击Get student benefits 下一步以后
  • CHL同步队列是什么

    CHL同步队列就是AQS内部维护的一个FIFO双向队列 AQS依赖这个双向队列来完成同步状态的管理 如果当前线程获取同步状态失败 AQS将会将当前线程以及等待状态信息构建成一个节点 Node 并将其加入到同步队列中 同时会阻塞当前线程 当同
  • linux 创建 svn 库

    cd data svn mkdir p itvalue chown R windmaker windmaker itvalue svnadmin create data svn itvalue cd itvalue cd conf vim
  • android studio中的CMakeLists.txt,就是如此简单

    android studio中的CMakeLists txt 就是如此简单 user Linvest 目录 1 cmake minimum required VERSION 3 4 1 2 add library native lib SH
  • RabbitMQ简介与安装

    技术对比 MQ 中文是消息队列 MessageQueue 字面来看就是存放消息的队列 也就是事件驱动架构中的Broker 比较常见的MQ实现 ActiveMQ RabbitMQ RocketMQ Kafka 几种常见MQ的对比 Rabbit
  • Android的ADB工具使用

    在SDK的Tools文件夹下包含着Android模拟器操作的重要命令ADB ADB的全称为Android Debug Bridge 就是调试桥的作用 借助这个工具 我们可以管理设备或手机模拟器的状态 还可以进行以下的操作 1 快速更新设备或
  • react-antd中表格的使用(数据的请求,带删除功能的表格)

    前言 最近在学习react antd框架 表格这一块在项目中的使用频率很高 最近在学习这一块的内容 所以记录一下 基础表格请求数据 一般对于表格中的数据我们会进行请求 将请求到的数据存入表格中展示出来 当我们请求较少时可以这样写 const
  • AssetDatabase的方法

    静态函数 描述 AddObjectToAsset 添加对象到资产 AllowAutoRefresh 递减一个内部计数器 Unity使用它来决定是否允许自动的资产数据库刷新行为 AssetPathToGUID 获得资产的GUID ClearL
  • Unity 3D 资源下载

    Unity 3D 资源下载 你也可以在 Unity 3D 中执行 Window Asset Store 菜单命令直接访问 Unity 资源商店 Asset Store Unity 资源商店简介 Unity 资源商店https www ass
  • 为curl 、git、go语言、wget、repo设置代理,解决ubuntu 18.04编译chromium os问题

    为CURL设置proxy 设置代理的方式搜索了一下挺多的 我测试了这两种方式 这两种方式在ubuntu 18 04上可以运行 有两种方法 第一通过声明环境变量 export http proxy socks5h 127 0 0 1 1080
  • a 标签 onclick ( not a function)

    文章目录 说明 点击 download 点击 download1 说明 如图 download 在 body 下方声明 点击 download 则报错 download is not a function 点击 download1 则可以正
  • 【LeetCode刷题】

    菜鸡的LeetCode打怪记录 tips 本文涉及的一切内容仅本人学习使用 如不慎发生侵权行为 请滴滴我删除 谢谢 文章目录 菜鸡的LeetCode打怪记录 题目1480 Running Sum of 1d Array 思路 代码 评分结果
  • 合法ip算法实现——输入字符串,输出所有合法的ip

    输入为一串0 9之间的数字字符 不改变字符串中字符的前后顺序 输出所有合法的ip地址 IPV4下用一个32位无符号整数来表示一个ip地址 一般用点分方式来显示 点将ip地址分成4个部分 如 10 137 17 1 所以要输出所有合法ip 1
  • 2020暑假实习-百度前端一面&二面&三面

    2020暑假实习 百度前端一面 二面 三面 一面 算法题 JS实现二分搜索 随机打乱数组 HTML cookie localStorage sessionStorage区别 标签页之间的通信 cookie setInterval local
  • 合并升序链表系列(Java)

    LeetCode原题链接 21 合并两个有序链表 力扣 LeetCode 23 合并K个升序链表 力扣 LeetCode 目录 合并两个有序链表 题目表述 解法一 解法二 合并K个升序链表 题目描述 解法一 解法二 合并两个有序链表 题目表
  • 网络字节序与地址变换

    文章目录 1 主机字节序与网络字节序 2 字节序转换 Endian Conversions 1 主机字节序与网络字节序 CPU 向内存保存数据的方式有 2 2 2 种 这意味着 CPU 解析数据的方式也分为 2 2 2 种
  • unity3D-learnin:Priests and Devils

    阅读以下游戏脚本 Priests and Devils Priests and Devils is a puzzle game in which you will help the Priests and Devils to cross t
  • datagrip 查询结果不能修改

    正常情况下 查询出来的结果集都能直接修改 工具栏会出现 符号 且修改后会出现要提交的提示 向上的绿色箭头 且主键字段会有一把钥匙的标识 如图 凡事总有意外 今天发现库中的A表查询结果不能修改 但B表又是可以修改的 更奇怪的是直接双击A表 打
  • RTL8762DK PWM(七)

    概述 本示例 只要介绍 如何使用PWM 又离成功进了一步 一 环境 1 硬件 RTL8762DK 128M Bits Falsh 2 软件 keil IDE 二 PWM的使用 1 创建examples ble pwm工程 基于 exampl
  • 【狂神】MySQL - Delete 和 Truncate 的区别

    1 DELETE 命令 语法 delete from 表名 where 条件 删除数据 避免这样写 会全部删除 DELETE FROM student 删除指定数据 DELETE FROM student WHERE id 1 2 TRUN