mysql中drop、delete、truncate的区别简述

hulianweb 2019-09-16 原文

mysql中drop、delete、truncate的区别简述

一、区别

1.去什么?

truncate table 和 delete只删除数据(记录)不删除表的结构;drop语句将删除表的数据(记录)和表结构依赖的约束(constrain),触发器(trigger),索引(index),保留依赖于该表的存储过程/函数,但是变为invalid状态 .

譬如:delete 是单杀,truncate 是团灭,drop 是把电脑摔了。

 

2.范畴:

delete DML 语句,操作完以后如果没有不想提交事务还可以回滚,truncate drop DDL 语句,操作完马上生效,不能回滚.

譬如:delete 是发微信说分手,后悔还可以撤回,truncate drop 是直接扇耳光说滚,不能反悔。

 

3.在自增字段的表中:

truncate之后的自增字段从1开始计数了[即truncate是摧毁原来的表重新创建一张结构相同的表(有原表的结构)],delete的仍保留原来的最数数值[即如果添加数据从最值+1开始],drop将表的结构也删除了(原表数据和结构都没有了)

 譬如:drop 是神舟火箭,truncate 是和谐号动车,delete 是自行车。

 

二、总结:

1.执行速度:一般,drop> truncate > delete。

2.在使用drop和truncate时一定要注意,虽然可以恢复,但为了减少麻烦,还是要慎重。

3.如果想删除部分数据用delete,注意带上where子句,回滚段要足够大;
如果想删除表,当然用drop;
如果想保留表而将所有数据删除,如果和事务无关,用truncate即可;
如果和事务有关,或者想触发trigger,还是用delete
如果是整理表内部的碎片,可以用truncate跟上reuse stroage,再重新导入/插入数据

 

发表于
2019-09-16 11:20 湖鱼莲 阅读() 评论() 编辑 收藏

 

版权声明:本文为hulianweb原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/hulianweb/p/11526362.html

mysql中drop、delete、truncate的区别简述的更多相关文章

  1. 详解数据库三种删除方法: delete drop truncate

    Delete Delete :删除数据表中的行(可以删除某一行,也可以在不删除数据表的情况下删除所有行)。 删 […]...

  2. select into from 和 insert into select 的用法和区别 TRUNCATE TABLE和DELETE FROM区别  TRUNCATE TABLE 和不带 WHERE 的 DELETE 功能是一样的,都是删除表中的所有数据,不过 TRUNCATE TABLE 速度更快,占用的日志更少,这是因为 TRUNCATE TABLE 直接释放数据页并且在事务日志中也只记录数据页的释放,而 DELETE 是一行一行地删除,在事务日志中要记录每

      本文导读:Insert 是T-sql中常用语句,但我们在开发中经常会遇到需要表复制的情况,如将一个tabl […]...

  3. laravel中delete()方法和destroy()方法的区别

    delete()方法是实例方法,需要查询到相应的数据并通过模型实例调用 destroy()方法可以直接调用,通 […]...

  4. Oracle 增删改(INSERT、DELETE、UPDATE)语句

    Ø  简介 本文介绍 Oracle 中的增删改语句,即 INSERT、DELETE、UPDATE 语句的使用。 […]...

  5. 删除内嵌的空迭代对象 / Recursively delete the embedded null iteration object

    1 # -*- coding:utf-8 -*- 2 # _author_:** 3 # data:2019/ […]...

  6. LeetCode 380. Insert Delete GetRandom O(1) 常数时间插入、删除和获取随机元素(C++/Java)

    题目: Design a data structure that supports all following […]...

  7. BST 解析 (二)height and deletion

      前面一章介绍了BST的结构和一些简单的基本功能,例如:insert,findMin,nextLarger等 […]...

  8. C++重写new和delete,比想像中困难

      关于C++内存管理这话题,永远都不过时。在我刚出道的时候,就已经在考虑怎么检测内存泄漏(https://w […]...

随机推荐

  1. linux的ll之后字段的含义以及如何修改文件的属主和用户组

    ls -l 列表信息详解 我们平时用ls -l 命令查看一个目录下的文件和子目录的详悉信息时,会得到一个详细的 […]...

  2. eslint 入门项目搭建过程

    github 地址 : https://github.com/gebin/eslint-demo 运行该项目 […]...

  3. Linux查看系统开机时间 – 潇湘隐者

    Linux查看系统开机时间 2014-05-29 16:21  潇湘隐者  阅读(168776)  评论(6) […]...

  4. “Thin and light for Travel”的前身今生后世――IBM T系列演化史记

      前言 “Thin and light for Travel”是什么?从字面上翻译就是“轻薄便携”,从含义来 […]...

  5. Java日志体系居然这么复杂?——架构篇

    显然System.out解决不了我们的问题,但是我们遇到的问题一定会有前人遇到过,日志也不例外 本文是一个系列 […]...

  6. ubuntu11.10 安装tp-link usb无线网卡 tl-wn725n

    准备工作             ndiswrapper 工具(操作过程中安装)             wi […]...

  7. gitlab被屏蔽问题

    gitlab注册报错 There was an error with the reCAPTCHA. Pleas […]...

  8. Android响应点击事件页面跳转

    这是我Android学习的第一天,第一堂课的作业是写两个button,分别实现点击显示hello world […]...

展开目录

目录导航