热线电话:13121318867

登录
2019-01-31 阅读量: 2286
mysql truncate和delete的区别是什么?

问题描述:

  • truncate和delete都可以快速清除表内数据,那么两者的差别是什么呢?我们以表score来一探究竟:
#建表
create table score (
id int(10) unique not null auto_increment,
stu_id int(10) not null,
c_name varchar(20),
grade int(10),
primary key(id)
);

#插入2行数据
insert into score values(null,906,'计算机',90);
insert into score values(null,906,'英语',85);


解决方法:

  • truncate清除完表内数据,再插入值,主键增长会从头生成

  • delete清除完表内数据后,再插入值,主键增长不会从头重新计算
  • 另外,delete后面可以跟where限定筛选条件,比truncate更加精准地删除数据


工作启示:

  • 除上述两种方法外,drop+create table的思路也做删除数据操作
  • 删除处理“粗暴程度”(也代表“速度”)从高到低依次是:drop-->truncate-->delete
  • 只有delete操作可以回滚,更符合业务端谨慎操作的要求

0.0000
2
关注作者
收藏
评论(1)

发表评论
朝阳Tim
2019-01-31
另外delete的操作如果报错(Error Code: 1175),是安全模式没有打开 需要先运行:set sql_safe_updates=0;
0.0000 0 0 回复