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表中数据 delete from 表名;truncate table 表名;不带where参数的delete语句可以删除mysql表中所有内容,使用truncate table也可以 ...
- MYSQL操作数据表中的记录
36:操作数据表中的记录插入记录 INSERT INTO 表名 VALUES(); 或者INSERT 表名 VALUES(); UPDATE更新记录(单表更新) DELETE删除记录( ...
- sql记录去重(SQL查询或者删除表中重复记录)
.查找表中多余的重复记录,重复记录是根据单个字段(peopleId)来判断 select*from people where peopleIdin (select peopleIdfrom peopl ...
- PHP mysql 删除表中所有数据只保留一条
DELETE FROM `logs` WHERE wangzhi='www.juhutang.com' and id<>101072; 上面这段代码的意思为 删除表logs中 所有字段wa ...
- MSSQL sql server 2005/2008 row_number()函数应用之–删除表中重复记录,只保留一条不重复数据
转自:http://www.maomao365.com/?p=4942 下文主要讲述:重复数据只获取一条的方法 row_number函数在数据库中的功能是为每一行 按照一定的规则生成一个编号,我们常常 ...
- SqlServer删除表中重复记录
重复记录:有两个意义上的重复记录 一是完全重复的记录,也即所有字段均重复的记录: 二是部分关键字段重复的记录,比如Name字段重复,而其他字段不一定重复或都重复可以忽略. 1.对于第一种重复,比较容易 ...
- mysql操作数据表中的记录1
一.插入记录INSERT mysql> create TABLE users( -> id SMALLINT UNSIGNED PRIMARY KEY AUTO_INCREMEN ...
- mysql 删除表中多余的重复记录
=============================================== 2019/7/16_第1次修改 ccb_warlock == ...
- mysql删除表中重复数据,只保留一个最小的id的记录
语句: delete from table1 where id not in (select minid from (select min(id) as minid from table1 group ...
随机推荐
- C#软件授权、注册、加密、解密模块源码解析并制作注册机生成license
最近做了一个绿色免安装软件,领导临时要求加个注册机制,不能让现场工程师随意复制.事出突然,只能在现场开发(离开现场软件就不受我们控了).花了不到两个小时实现了简单的注册机制,稍作整理. ...
- JavaScript的DOM操作获取元素的大小
通过 style 内联获取元素的大小 需要注意的是style 获取只能获取到行内 style 属性的 CSS 样式中的宽和高,如果有获取:如果没有则返回空. <!DOCTYPE html> ...
- ASP.NET MVC编程——路由
框架自动生成的路由配置 上图中,路由配置文件为App_Start文件夹下的RouteConfig.cs. 代码如下: public class RouteConfig { public static ...
- 论mysql主从复制里面的那些坑
1.找好配置文件,修改对的配置文件,有的时候会有多个配置文件,要搞清楚加载的哪个配置文件. 2.主库备份钱的操作除了设置 只读状态外,还要设置全局只读=1. 3.mysqldump备份sql很方便,恢 ...
- ZOJ 3981 && 2017CCPC秦皇岛 A:Balloon Robot(思维题)
A - Balloon Robot Time Limit:1000MS Memory Limit:65536KB 64bit IO Format:%lld & %llu Sub ...
- Linux Shell常用技巧(六)
十二. 行的排序命令sort: 1. sort命令行选项: 选项 描述 -t 字段之间的分隔符 -f 基于字符排序时忽略大小写 -k 定义排序的域字段,或者是基于域字段的部分数据进行排序 - ...
- 图片 和 base64 互转
图片转base64 NSData *data = [NSData dataWithContentsOfURL:[NSURL URLWithString:urlStr]]; UIImage *img = ...
- BCNF范式及其分解方法(对一次Lab作业的总结)
BCNF是比第三范式更严格一个范式.它要求关系模型中所有的属性(包括主属性和非主属性)都不传递依赖于任何候选关键字.也就是说,当关系型表中功能上互相依赖的那些列的每一列都是一个候选关键字时候,该满足B ...
- dataTable配置项说明
Datatables是一款jquery表格插件.它是一个高度灵活的工具,可以将任何HTML表格添加高级的交互功能. 官网地址:https://datatables.net/ 中文说明地址:http:/ ...
- PHPCMS v9 手机端栏目绑定模板
phpcms的手机端,模块是有了,但是有些地方用的还不是很舒服,其中移动端栏目无法绑定模板就不是很方便.如图,所有的栏目绑定的模板是固定的. 这次咱们就来处理下,移动端如何设置相应的模板.这里说是设置 ...