`
HelloSure
  • 浏览: 308338 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

MySQL删除数据语句Delete和Truncate

 
阅读更多
在用insert into向数据库中增加数据的时候,发现如果delete某行之后id就不连续了。于是找了相关的资料:

-------------------------------------分割线---------------------------------------------
MySQL为我们提供了delete和truncate语句来删除数据。

delete 语句的定义:
经常和数据库打交道的孩子们,删除数据的时候用的大多都是 delete 语句。现在让我们来看一下 delete语句的定义。
DELETE [LOW_PRIORITY] [QUICK] [IGNORE] FROM tbl_name

    [WHERE where_definition]

    [ORDER BY ...]

    [LIMIT row_count]


delete 语句的示例:
按照上面的语法结构,我想删除 firends 表中所有 user_name 等于 simaopig 的记录,就可以使用如下SQL语句:
delete from friends where user_name = 'simaopig';


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

truncate 语句的简单说明:
这个语句之前我也没有接触过,也没有使用过。因为一般情况下,删除数据大家都在使用delete语句。其实这个 truncate 命令很简单,它的意思是:删除表的所有记录。相当于 delete 语句不写 where 子句一样。其语法结构为:
TRUNCATE  tbl_name


这里简单的给出个示例,我想删除 friends 表中所有的记录,可以使用如下语句:
truncate table friends;


truncate 和 delete的效率问题:
    如果想要删除表的所有数据,truncate语句要比 delete 语句快。因为 truncate 删除了表,然后根据表结构重新建立它,而 delete 删除的是记录,并没有尝试去修改表。这也是为什么当向一个使用 delete 清空的表插入数据时,MySQL 会记住前面产生的AUTOINCREMENT序列,并且继续利用它对AUTOINCREMENT字段编号。而truncate删除表后,表是从1开始为autoincrement字段编号。

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

转自http://blog.csdn.net/BigBird2012/article/details/6340424
分享到:
评论

相关推荐

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

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

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

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

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

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

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

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

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

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

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

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

    MySQL删除表数据的方法

    在MySQL中有两种方法可以删除数据,一种是DELETE语句,另一种是TRUNCATE TABLE语句。DELETE语句可以通过WHERE对要删除的记录进行选择。而使用TRUNCATE TABLE将删除表中的所有记录。因此,DELETE语句更灵活。  如果...

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

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

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

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

    10道经典MySQL⾯试题

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

    删除mysql数据表如何操作

    在MySQL中有两种方法可以删除数据,一种是DELETE语句,另一种是TRUNCATE TABLE语句。DELETE语句可以通过WHERE对要删除的记录进行选择。而使用TRUNCATE TABLE将删除表中的所有记录。因此,DELETE语句更灵活。 如果要...

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

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

    MySQL数据库应用-实验训练3 数据增删改操作

    MySQL数据库应用-实验训练3 数据增删改操作实验目的:基于实验1创建的汽车用品网上商城数据库Shopping,练习Insert、Delete、TRUNCATE TABLE、Update语句的操作方法,理解单记录插入与批量插入、DELETE与TRUNCATE ...

    mysql表的清空、删除和修改操作详解

    效率上truncate比delete快,但truncate删除后不记录mysql日志,不可以恢复数据。 delete的效果有点像将mysql表中所有记录一条一条删除到删完, 而truncate相当于保留mysql表的结构,重新创建了这个表,所有的状态都...

    mysql清除记录数

    1.mysql清空表语句后,新插入的语句会ID会以之前存在的序号记录下去,使用truncate命令清除记录,新插入的语句从1开始 示例: mysql> select id from t1; +----+ | id | +----+ | 1 | | 2 | | 3 | +----+ 清空表 ...

    SQL三种删除语句的用法比较

    SQL三种删除语句的用法比较:drop、truncate、delete。

    Mysql误删数据解决方案及kill语句原理

    使用delete语句误删数据行 使用drop table或者truncate table误删数据表 使用drop database语句误删数据库 使用rm误删mysql整个实例 对于误删行 使用flashback工具闪回,把数据恢复回来。原理是修改binlog的...

    2022国家开放大学实验训练3 数据增删改操作

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

    MySQL用truncate命令快速清空一个数据库中的所有表

    1. 先执行select语句生成所有truncate语句 语句格式: select CONCAT('truncate TABLE ',table_schema,'.',TABLE_NAME, ';') from INFORMATION_SCHEMA.TABLES where table_schema in ('数据库1','数据库2'); ...

Global site tag (gtag.js) - Google Analytics