朝阳Tim

2019-01-31   阅读量: 1924

Mysql

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操作可以回滚,更符合业务端谨慎操作的要求

添加CDA认证专家【维克多阿涛】,微信号:【cdashijiazhuang】,提供数据分析指导及CDA考试秘籍。已助千人通过CDA数字化人才认证。欢迎交流,共同成长!
0.0000 0 2 关注作者 收藏

评论(1)

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

推荐课程