mysql中如何删除空记录表_mysql删除表中的记录
大家都知道,在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删除表中的记录相关推荐
- mysql随机查询多条记录表_MySQL 随机查询表中N条记录
mysql 随机查询N条记录 method 1 : SELECT * FROM tablename ORDER BY RAND() LIMIT N; method 2 : SELECT * FROM ...
- mysql表中的中文是乱码_mysql插入表中的中文显示为乱码或问号的解决方法
版权声明:本文为博主原创文章,未经博主允许不得转载. 今天在做ssh的博客项目时发现mysql数据库中的中文显示为问号,网上查阅了很多资料,都不是很全,所以我总结一下,供大家参考和自己复习. 1.我的 ...
- mysql重复度高的字段_mysql中大表中重复字段的高效率查询的方法
mysql中大表重复字段应该如何查询到?这似乎是一个很折磨人的问题. 本文为大家介绍一个MySQL大表重复字段的查询方法,供大家学习参考. 数据库中有个大表,需要查找其中的名字有重复的记录id,以便比 ...
- 删除计算机系学生(在student表中),数据库原理及应用(第2版)习题参考答案
When Grade between 70 and 79 THEN Grade = '中' When Grade between 60 and 69 THEN Grade = '及格' Else Gr ...
- 不同服务器数据库表连接查询修改,如何连接多个数据库,mysql中的服务器和查询两个表中的对方?...
我期待从不同服务器连接两个不同的数据库.此外,我想运行一个查询,从两个数据库中获取数据到一个单一的结果.我正在使用mysql在PHP脚本中执行此操作.这里是如何很期待做[没有成功:)]如何连接多个数据 ...
- java窗口向mysql加信息_Java中如何实现向DBC方式向表中添加数据
原标题:Java中如何实现向DBC方式向表中添加数据 Java中如何实现向DBC方式向表中添加数据 Java程序JDBC方式向数据库的表添加记录的步骤: 1.新建工程: Java Project 2. ...
- mysql数据库优化课程---12、mysql嵌套和链接查询(查询user表中存在的所有班级的信息?)...
mysql数据库优化课程---12.mysql嵌套和链接查询(查询user表中存在的所有班级的信息?) 一.总结 一句话总结: in:distinct:select * from class wher ...
- MySQL数据库将查询结果插入到其它表中
假如目前只有一个goods表,想要增加一个商品分类信息,简单通过goods表无法完成商品分类的添加,这时可以再创建一个商品分类表,把goods表中的商品分类信息添加到该表中,将goods表中的分类名称 ...
- 表间数据复制--SELECT表中的数据插入到新的表中(ORACLE,MSSQL)
表间数据复制--SELECT表中的数据插入到新的表中 --在Oracle 9i中 CREATE TABLE scott.test AS (SELECT DISTINCT empno,ename,hir ...
最新文章
- 学习python的日常6
- 关于antd Select 限制选择个数的解决方案
- Open source robotics toolkits: use virtual arenas to test your robotics algorithms
- .NET一个线程更新另一个线程的UI(两种实现方法及若干简化)
- 解决This picacion faied to trt becuse t could, not find or load the Qt platform plugin “windows““问题
- BZOJ 4066 简单题 ——KD-Tree套替罪羊树
- 四大基本反应类型的关系_死神:漫画已完结,却依旧没有填坑,尸魂界四大贵族都有谁?...
- 虚拟机python环境搭载_windows之自动化在虚拟机部署操作系统并自带python环境
- 私人笔记 -- 将图片插入到指定的单元格位置,并设置图片的宽度和高度
- SpringBoot重复配置数据库导致Access denied for user ‘root‘@‘localhost‘ (using password: YES)
- 【ESIM】论文阅读笔记:文本蕴含之ESIM
- 安装php服务图解,图文详解安装PHP运行环境
- 用计算机怎么算加权标准差,Tableau,如何计算加权标准差
- appfuse上手(选取刘文涛blog)
- B端页面——详细表格设计流程
- 读取三维数据.stl文件
- DSP28335 CAN模块例程
- Linux 设备树(Device Tree)简介
- 长沙理工大学计算机英语试卷,长沙理工大学英语A班考试题库翻译
- 实现字典树(前缀树、Trie树)并详解其应用
热门文章
- Python+django网页设计入门(5):自定义用户注册与登录功能
- 矩阵分析——第一章 线形空间和线性变换
- 安卓是java ios c_如何为Android和iOS使用相同的C ++代码?
- linux充电时熄屏时间,充电时玩手机会损害电池吗
- linux入门 适合初学者_经过慎重考虑,我拿出这套适合初学者入门的Java基础完整版视频...
- python元类是什么_谈谈Python中元类Metaclass(一):什么是元类
- g++ linux 编译开栈_linux下使用g++编译cpp工程
- 微型计算机一般只具有定点运算功能对吗,大学计算机基础模拟卷2及答案剖析.doc...
- leetcode刷题:二叉树的中序遍历
- vs2015项目导出为Qt项目