`
dove19900520
  • 浏览: 592853 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

mysql中的delete和truncate

阅读更多

在MySQL数据库中,DELETE语句和TRUNCATE TABLE语句都可以用来删除数据,但是这两种语句还是有着其区别的,下文就为您介绍这二者的差别所在空mysqll表内容常见的有两种方法:一种delete,一种是truncate 。 不带where参数的delete语句可以删除mysql表中所有内容,使用truncate table也可以清空mysql表中所有内容。效率上truncate比delete快,但truncate删除后不记录mysql日志,不可以恢复数据。

 

一、truncate的语法结构为:

TRUNCATE [TABLE] tbl_name 

 下面给出一个简单的小示例:

 我想删除 test表中所有的记录,可以使用如下语句:

truncate table test;

 

 二、delete的效果有点像将mysql表中所有记录一条一条删除到删完,而truncate相当于保留mysql表的结构,重新创建了这个表,所有的状态都相当于新表。

其语法结构是:

DELETE [LOW_PRIORITY] [QUICK] [IGNORE] FROM tbl_name 

[WHERE where_definition] 

[ORDER BY ...] 

[LIMIT row_count] 

 

按照上面的语法结构,我想删除 test表中所有 infoId等于abced的记录,
就可以使用如下SQL语句:

delete from test where infoId = 'abced';

 

注意事项:

从语法结构中,我们可以看出,和update语法一样,我们是可以省略where子句的。不过,这是一个很危险的行为。因为如果不指定where子句,delete将删除表中所有的记录,而且是立即删除,即使你想哭都没地方,也没时间,因为你需要马上和主管承认错误,并且立即找出mysql日志,来回滚记录。

总结

不过truncate命令快规快,却不像delete命令那样对事务处理是安全的。因此,如果我们想要执行truncate删除的表正在进行事务处理,这个命令就会产生退出并产生错误信息。

分享到:
评论

相关推荐

    MySQL—delete和truncate的区别

      delete 允许使用条件 (删除符合条件的数据);  允许使用limit限制删除的记录数:limit n;  常见的是:limit配合order by来使用,先将结果排序,再删除固定数量的记录;  只有order by是没有意义的,就直接...

    mysql 删除操作(delete+TRUNCATE)

    主要介绍了mysql 删除操作,主要包括了delete与TRUNCATE的使用,需要的朋友可以参考下

    MySQL删除表操作实现(delete、truncate、drop的区别)

    本文主要讲mysql中三种删除表的操作,delete语句、truncate语句以及drop语句的区别: 简介 delete 1、删除整张表的数据: delete from table_name; 2、删除部分数据,添加where子句: delete from table_name ...

    详解MySQL中DROP,TRUNCATE 和DELETE的区别实现mysql从零开始

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

    MySQL删除数据Delete与Truncate语句使用比较

    在MySQL数据库中,DELETE语句和TRUNCATE TABLE语句都可以用来删除数据,但是这两种语句还是有着其区别的,下文就为您介绍这二者的差别所在

    详解SQL中drop、delete和truncate的异同

     truncate和不带where子句的delete,以及drop 都会删除表内的数据 第二:不同点: 1. truncate和delete只删除数据不删除表的结构(定义)  drop 语句将删除表的结构被依赖的约束(constrain)、触发器(trigger)、索引...

    MySQL中truncate误操作后的数据恢复案例

    实际线上的场景比较复杂,当时涉及了truncate, delete 两个操作,经确认丢数据差不多7万多行,等停下来时,差不多又有共计1万多行数据写入。 这里为了简单说明,只拿弄一个简单的业务场景举例。 测试环境: Percona-...

    delete、truncate、drop的区别以及该如何选择

    “怪不得,其实要删除MySQL数据是有好几种方式的,有些场景下是不应该用DELETE的,比如你这种情况。好了,让我来给你讲一下吧。” MySQL删除数据的方式都有哪些? 咱们常用的三种删除方式:通过 delete、truncate、...

    MySQL防止delete命令删除数据的两种方法

    方法一我常用的做法,就是在数据库中加一个删除标识字段,如: isdel=1 这样就代码... 您可能感兴趣的文章:mysql之delete删除记录后数据库大小不变mysql 删除操作(delete+TRUNCATE)mysql支持跨表delete删除多表记录MyS

    浅析删除表的几种方法(delete、drop、truncate)

    您可能感兴趣的文章:数据库中删除语句Drop、Delete、Truncate的相同点和不同点的比较(实例说明)drop,truncate与delete的区别详解MySQL中DROP,TRUNCATE 和DELETE的区别实现mysql从零开始浅析drop user与delete from ...

    mysql delete 多表连接删除功能

    单个表的删除: ...TRUNCATE customer; 无法报告删除了几行,且只能用于单一表 多表连接删除: DELETE orders,itrms FROM orders,items WHERE orders.userid = items.userid AND orders.orderid = i

    实验训练3数据增删改操作.docx

    基于实验1创建的汽车用品网上商城数据库Shopping,练习Insert、Delete、TRUNCATE TABLE、Update语句的操作方法,理解单记录插入与批量插入、DELETE与TRUNCATE TABLE语句、单表修改与多表修改的区别。

    国家开放大学 MySQL数据库应用 实验训练3 数据增删改操作

    国家开放大学 MySQL数据库应用 实验训练3 数据增删改操作

    10道经典MySQL⾯试题

    相同点: truncate和不带where⼦句的delete,以及drop都会删除表内的数据 不同点: truncate会清除表数据并重置id从1开始,delete就只删除记录,drop可以⽤来删除表或数据库并且将表所占⽤的空间全部释放 truncate和...

    MySQL 5.1中文手冊

    10.2. MySQL中的字符集和校对 10.3. 确定默认字符集和校对 10.3.1. 服务器字符集和校对 10.3.2. 数据库字符集和校对 10.3.3. 表字符集和校对 10.3.4. 列字符集和校对 10.3.5. 字符集和校对分配示例 10.3.6. 连接字符...

Global site tag (gtag.js) - Google Analytics