MySQL中drop,delete,truncate都可以用于删除,那么它们之间的区别是什么呢?首先我们先来学习一下这三个命令。注:本篇文章主要介绍对于表的删除

一、drop命令

drop是DDL(数据定义语言),用于整张表的删除,删除的时候不仅删除了表中的数据,还删除了表结构。(也就是使用drop删除表后,数据库中便查询不到该表)
语法:drop table 表名;

注:drop命令后不可使用where等命令。

二、delete命令

delete是DML(数据操作语言),用于对表中数据的删除,不会删除表结构,也就是说即使你使用delete from 表名;将表中所有数据都删除了,该表依然存在。
delete的删除原理:在InnoDB数据库引擎下,将要删除的数据添加一个删除标记,该表的实际大小不会产生变化。
语法:delete from 表名 where 字段名 = 值;(where后面的语句可以不要,表示删除整张表的数据)
![delete删除表中元素

三、truncate命令

truncate是DDL(数据定义语言),使用该命令可以删除表中所有数据,但不会删除表结构。但是该命令不能添加查询条件。
truncate的删除原理是重新创建一个表(不包含数据),然后将原来的表删除。
语法:truncate table 表名;

四、drop VS delete VS truncate

4.1 相同点

  1. 都可以删除整张表中的数据

4.2 不同点

  1. 删除的范围:drop(删除表中所有数据及表结构)>truncate(删除表中所有数据)>=delete(删除表中所有数据或部分数据)
  2. 查询条件:delete可以使用查询条件进行表中数据删除,drop和truncate不可以
  3. 命令类型:delete属于DML,drop和truncate属于DDL
  4. 数据能否恢复:delete删除的数据可以恢复,但是drop和truncate删除的数据不能恢复
  5. 执行效率:drop>truncate>delete

MySQL中的删除:drop,delete,truncate的区别和联系相关推荐

  1. 转 Oracle 删除表,oracle 中删除表 drop delete truncate 的区别

    相同点,使用drop delete truncate 都会删除表中的内容 drop table 表名 delete from 表名(后面不跟where语句,则也删除表中所有的数据) truncate ...

  2. mysql 删除视图 命令_在MySQL中,删除视图使用(????)命令。

    在MySQL中,删除视图使用(????)命令. 答:DROP 设计的优点之一就在于其在命令执行上的刚性 答:职能式 4月15日作业 答:笔记 喘证的主要临床特征是 答:呼吸急促,甚至张口抬肩,鼻翼煽动 ...

  3. 删除binlog mysql_mysql中删除binlog的方法?mysql中如何删除binlog?

    需求描述: 在mysql中如何删除binlog,因为随着数据库的运行,mysql中产生的binlog会越来越大,有可能把磁盘撑爆了,所以记录下删除 binlog的方法. 操作过程: 1.通过系统参数控 ...

  4. 记MySQL中如何删除某个字段中的某个字符

    问题描述: 问题:项目中对以逗号分隔的字符串进行指定字符修改删除时,会导致其它字符无法使用. 原因分析: SQL语句拼写错误.遗漏replace()中的第三个参数,漏写了,. 错误的写法: updat ...

  5. MySQL中索引与视图的用法与区别详解

    索引与视图是我们在日常使用mysql必不可少的一部分,最近在学习中看到一本书中关于这方法写的不错,所以这篇文章主要给大家介绍了关于MySQL中索引与视图的使用与区别的相关资料,需要的朋友可以参考借鉴, ...

  6. mysql中 REPLACE INTO 和 INSERT INTO 的区别

    mysql中 REPLACE INTO 和 INSERT INTO 的区别 REPLACE INTO 和 INSERT INTO 功能类似,都是像表中插入数据,不同点在于:REPLACE INTO 首 ...

  7. php普通索引和唯一索引,MySQL中普通索引和唯一索引的区别详解

    本篇文章介绍了MySQL中普通索引和唯一索引的区别,讲解很详细,希望对学习MySQL的朋友有帮助! 需要注意的是: redo log中的数据,可能还没有 flush 到磁盘,磁盘中的 Page 1 和 ...

  8. MySQL+create+base,MySQL中CREATE DATABASE和CREATE SCHEMA的区别

    MySQL中CREATE DATABASE和CREATE SCHEMA的区别 create schema 是创建模式 create database 是创建数据库 但进入MySQL不用选择任何数据库即 ...

  9. mysql中的where和having子句的区别

    mysql中的where和having子句的区别 having的用法 having字句可以让我们筛选成组后的各种数据,where字句在聚合前先筛选记录,也就是说作用在group by和having字句 ...

  10. MySQL中char,varchar和text的区别

    MySQL中char,varchar和text的区别 java程序中的string类型,在mysql数据表中可以有三种对应的类型:char,varchar和text. char,varchar和tex ...

最新文章

  1. 软件设计师备考知识05--设计模式
  2. 互联网协议 — IPSec 安全隧道协议
  3. 驱动WDK7600在VC6.0下的编译开发配置环境
  4. ubuntu16.04 uninstall cuda 9.0 completely and install 8.0 instead
  5. IIS网站服务器性能优化指南
  6. maven的启动类和MAVEN_OPTS参数
  7. Struts2使用!动态方法调用无效
  8. kubeadmin 安装 k8s集群
  9. windows消息定义
  10. CrtInvertedIdx
  11. TreeView无限极分类绑定(从数据库读取数据源)
  12. Gitlab的develop角色的人没有权限无法提交的问题解决方案
  13. Head first servlet and jsp学习笔记
  14. PyFlink 社区扶持计划正式上线!
  15. python开发转行渗透测试_月薪45K的大牛用Python开发一款密码攻击测试器!密码形同虚设!...
  16. HTTP与Tcp协议下双工通信的差异
  17. Java故障定位方法总结
  18. 虚拟机Class文件结构笔记
  19. python调用woff_修改Python脚本以批量转换目录中的所有“WOFF”文件
  20. rtmp中flv和flv文件的区别

热门文章

  1. 计算机网络 之 DNS (Domain Name System)域名服务器
  2. 应用Microchip dsPIC芯片日志——烧录出现的问题
  3. 软件测试之---测试设计方法
  4. 25.(cesium篇)cesium军事标绘-攻击箭头采集(燕尾)
  5. rails rjs select method help
  6. STM32学习记录0002-STM32初探
  7. redis第三方软件medis
  8. 接口开放平台,我的一些思考
  9. 【Django】有效解决django.core.exceptions.ImproperlyConfigured: Requested setting EMAIL_FROM, but settings
  10. Weakly-Supervised Physically Unconstrained Gaze Estimation论文翻译