码迷,mamicode.com
首页 > 其他好文 > 详细

id 自增------删除数据后恢复到删除前自增id

时间:2014-10-10 19:34:04      阅读:161      评论:0      收藏:0      [点我收藏+]

标签:style   blog   http   color   使用   for   strong   数据   sp   

删除数据后,执行下面语句: 

    ALTER TBALE TableName AUTO_INCREMENT=1

mysql删除比较

一、DROP

  drop  table tablename

    绝招:删除内容和定义,释放空间。简单来说就是把整个表去掉.以后要新增数据是不可能的,除非新增一个表

二、TRUNCATE

  truncate table tablename

    绝招:删除内容、释放空间但不删除定义(表定义和结构)。与drop不同的是,他只是清空表数据而已.执行语句之后,发现数据表的结构还在,也就是不删除定义.

 

三、DELETE

    delete from tbname 清空表

    delete form tablename where 删除某条记录

    绝招: --虽然也是删除整个表的数据,但是过程是痛苦的(系统一行一行地删,效率较truncate低)

至于释放空间,看下下面两幅图.你们就会明白的

bubuko.com,布布扣

上图:Id列标识列,因之前delete过行数据,所以会出现标识列不连续(体现了delete删除是不释放空间的)

  经过truncate table Teacher 之后 再新增三条数据

bubuko.com,布布扣

上图:同样Id是标识列,发现插入数据的时候,标识列连续了(体现了truncate删除是释放空间)

注意:truncate 不能删除行数据,要删就要把表清空

比较:

  truncate 和 delete 都可以清空表但是,truncate 比 delete速度快,且使用的系统和事务日志资源少。

  TRUNCATE TABLE TableName是一种快速的,无日志记录的,删除表中所有记录的方法。

  delete 语句每次删除一行,并在事务日志中为所删除的每行记录一项。所以可以对delete操作进行roll back

  当使用truncate  表被清空后表和表的索引讲重新设置成初始大小,而delete则不能。

    truncate 在各种表上无论是大的还是小的都非常快。如果有ROLLBACK命令Delete将被撤销,而 truncate 则不会被撤销。

 

 

 

id 自增------删除数据后恢复到删除前自增id

标签:style   blog   http   color   使用   for   strong   数据   sp   

原文地址:http://www.cnblogs.com/jiechn/p/4016365.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!