首页 > 技术文章 > mysql 删除数据的几个操作

xushengyong 2020-06-30 18:32 原文

mysql 删除数据的几个操作

刚刚在码云上看了一个项目,想要下载下来玩玩,然后动手搞了一下,启动项目 ,发现需要执行数据库脚本,里面有一个表是存储图片地址的,叫beautiful_pictures表,有很多数据,已经执行了,还是在公司的测试库里面,哈哈 ,突然意识到不行,需要把这些露骨的数据删除掉,突然发现对删除的几个操作有点模糊 了,因此记录如下。

1、drop table tableName 删除一个表 包括表结构,什么都删除了,毛都不剩了,所以这个操作公司里面慎用。

2、delete  from tableName

   删除所有数据,保留表结构以及索引

  后面可以加where 条件 用来删除部分数据,此操作是可以一行一行删除的,并且记录 了mysql日志,之后可以rollback操作。

3、truncate table tableName

  删除所有数据,并且不记录mysql日志,因此不可以回滚(rollback)操作,

  不可以和where一起使用,也就是说只能整体删除数据。

原因:truncate 相当于保留原mysql表的结果,重新创建了这个表,所有的状态都相当于新的,而delete的效果相当于一行行删除,所以可以rollback;

delete 和truncate 对比

1. 效果

效率上 truncate 比 delete快,而且 truncate 删除后将重建索引(新插入数据后id从0开始记起),而 delete不会删除索引 (新插入的数据将在删除数据的索引后继续增加)

2. 返回值

delete 操作后返回删除的记录数,而 truncate 返回的是0或者-1(成功则返回0,失败返回-1);

 

 

参考博客 https://www.cnblogs.com/fcc-123/p/10672604.html

推荐阅读