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