大家都知道,在MySQL中删除一个表中的记录有两种方法,一种是DELETE FROM TABLENAME WHERE... , 还有一种是TRUNCATE TABLE TABLENAME。

DELETE FROM

从 MySQL 数据表中删除数据,如果没有指定 WHERE 子句,MySQL 表中的所有记录将被删除。可以在 WHERE 子句中指定任何条件。

语法:

DELETE FROM table_name WHERE column_name = some_value

TRUNCATE TABLE TABLENAME

删除表中的所有行,而不记录单个行删除操作。

语法:

TRUNCATE TABLE TABLENAME

区别:

1)DELETE FROM语句可以使用WHERE 对要删除的记录进行选择,TRUNCATE TABLE 将删除表中的所有记录,so,DELETE FROM更灵活。

2)如果DELETE FROM 不加WHERE条件,那么他和TRUNCATE TABLE 是一样的,唯一的区别就是DELETE FROM删除后返回被删除的记录数,而TRUNCATE TABLE返回的是0。

3)如果一个表中有自增的字段,这时使用DELETE和TRUNCATE删除表中所有数据时,如果表中有自增字段,则自增字段将起始值恢复为1,如果不想恢复,则可以在DELETE时加上WHERE的永真条件,使用DELETE FROM TABLENAME WHERE 1即可,但在这样做时会有一些缺点,即扫描表中的每一行记录,所以虽然可以保持自增的最大值,但他的执行成本要比没有WHERE条件的DELETE以及TRUNCATE大得多的多。

4)当表中的数据比较多时,删除全表数据建议使用TRUNCATE TABLE,TRUNCATE TABLE通过释放存储表数据所用的数据页来删除数据,并且只在事务日志中记录页的释放,而DELETE FROM则是将数据一行一行的删除,每删除一行,还要在事务日志中为所删除的行记录一项,贼慢。

5)TRUNCATE TABLE删除后无法ROLLBACK,原因:TRUNCATE是一个DDL语句,将被隐式提交,不能使用ROLLBACK命令,而DELETE是DML语句,可以ROLLBACK(前提是DELETE操作没有COMMIT)

注:SQL语言包括四种主要程序设计语言类别的语句:

数据定义语言(DDL)主要表现为创建删除表,创建索引等;

数据操作语言(DML)主要表现为对数据的追加,更新查询;

数据控制语言(DCL)主要表现为授权(GRANT),撤销授权(REVOKE),拒绝授权(DENY);

事务控制语言(TCL)主要表现为设置保存点(SAVEPOINT),回滚(ROLLBACK),提交(COMMIT)。

总结:

DELETE可以通过WHERE语句选择要删除的记录,但执行得速度不快,可以返回被删除的记录数,在未提交情况下可以回滚。而TRUNCATE TABLE无法删除指定的记录,而且不能返回被删除的记录。但它执行得非常快。

mysql中如何删除空记录表_mysql删除表中的记录相关推荐

  1. mysql随机查询多条记录表_MySQL 随机查询表中N条记录

    mysql 随机查询N条记录 method 1 : SELECT * FROM tablename ORDER BY RAND() LIMIT N; method 2 : SELECT * FROM ...

  2. mysql表中的中文是乱码_mysql插入表中的中文显示为乱码或问号的解决方法

    版权声明:本文为博主原创文章,未经博主允许不得转载. 今天在做ssh的博客项目时发现mysql数据库中的中文显示为问号,网上查阅了很多资料,都不是很全,所以我总结一下,供大家参考和自己复习. 1.我的 ...

  3. mysql重复度高的字段_mysql中大表中重复字段的高效率查询的方法

    mysql中大表重复字段应该如何查询到?这似乎是一个很折磨人的问题. 本文为大家介绍一个MySQL大表重复字段的查询方法,供大家学习参考. 数据库中有个大表,需要查找其中的名字有重复的记录id,以便比 ...

  4. 删除计算机系学生(在student表中),数据库原理及应用(第2版)习题参考答案

    When Grade between 70 and 79 THEN Grade = '中' When Grade between 60 and 69 THEN Grade = '及格' Else Gr ...

  5. 不同服务器数据库表连接查询修改,如何连接多个数据库,mysql中的服务器和查询两个表中的对方?...

    我期待从不同服务器连接两个不同的数据库.此外,我想运行一个查询,从两个数据库中获取数据到一个单一的结果.我正在使用mysql在PHP脚本中执行此操作.这里是如何很期待做[没有成功:)]如何连接多个数据 ...

  6. java窗口向mysql加信息_Java中如何实现向DBC方式向表中添加数据

    原标题:Java中如何实现向DBC方式向表中添加数据 Java中如何实现向DBC方式向表中添加数据 Java程序JDBC方式向数据库的表添加记录的步骤: 1.新建工程: Java Project 2. ...

  7. mysql数据库优化课程---12、mysql嵌套和链接查询(查询user表中存在的所有班级的信息?)...

    mysql数据库优化课程---12.mysql嵌套和链接查询(查询user表中存在的所有班级的信息?) 一.总结 一句话总结: in:distinct:select * from class wher ...

  8. MySQL数据库将查询结果插入到其它表中

    假如目前只有一个goods表,想要增加一个商品分类信息,简单通过goods表无法完成商品分类的添加,这时可以再创建一个商品分类表,把goods表中的商品分类信息添加到该表中,将goods表中的分类名称 ...

  9. 表间数据复制--SELECT表中的数据插入到新的表中(ORACLE,MSSQL)

    表间数据复制--SELECT表中的数据插入到新的表中 --在Oracle 9i中 CREATE TABLE scott.test AS (SELECT DISTINCT empno,ename,hir ...

最新文章

  1. 学习python的日常6
  2. 关于antd Select 限制选择个数的解决方案
  3. Open source robotics toolkits: use virtual arenas to test your robotics algorithms
  4. .NET一个线程更新另一个线程的UI(两种实现方法及若干简化)
  5. 解决This picacion faied to trt becuse t could, not find or load the Qt platform plugin “windows““问题
  6. BZOJ 4066 简单题 ——KD-Tree套替罪羊树
  7. 四大基本反应类型的关系_死神:漫画已完结,却依旧没有填坑,尸魂界四大贵族都有谁?...
  8. 虚拟机python环境搭载_windows之自动化在虚拟机部署操作系统并自带python环境
  9. 私人笔记 -- 将图片插入到指定的单元格位置,并设置图片的宽度和高度
  10. SpringBoot重复配置数据库导致Access denied for user ‘root‘@‘localhost‘ (using password: YES)
  11. 【ESIM】论文阅读笔记:文本蕴含之ESIM
  12. 安装php服务图解,图文详解安装PHP运行环境
  13. 用计算机怎么算加权标准差,Tableau,如何计算加权标准差
  14. appfuse上手(选取刘文涛blog)
  15. B端页面——详细表格设计流程
  16. 读取三维数据.stl文件
  17. DSP28335 CAN模块例程
  18. Linux 设备树(Device Tree)简介
  19. 长沙理工大学计算机英语试卷,长沙理工大学英语A班考试题库翻译
  20. 实现字典树(前缀树、Trie树)并详解其应用

热门文章

  1. Python+django网页设计入门(5):自定义用户注册与登录功能
  2. 矩阵分析——第一章 线形空间和线性变换
  3. 安卓是java ios c_如何为Android和iOS使用相同的C ++代码?
  4. linux充电时熄屏时间,充电时玩手机会损害电池吗
  5. linux入门 适合初学者_经过慎重考虑,我拿出这套适合初学者入门的Java基础完整版视频...
  6. python元类是什么_谈谈Python中元类Metaclass(一):什么是元类
  7. g++ linux 编译开栈_linux下使用g++编译cpp工程
  8. 微型计算机一般只具有定点运算功能对吗,大学计算机基础模拟卷2及答案剖析.doc...
  9. leetcode刷题:二叉树的中序遍历
  10. vs2015项目导出为Qt项目