2019-01-31
閱讀量:
2860
mysql truncate和delete的區(qū)別是什么?
問題描述:
- truncate和delete都可以快速清除表內(nèi)數(shù)據(jù),那么兩者的差別是什么呢?我們以表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行數(shù)據(jù)
insert into score values(null,906,'計(jì)算機(jī)',90);
insert into score values(null,906,'英語(yǔ)',85);
解決方法:
- truncate清除完表內(nèi)數(shù)據(jù),再插入值,主鍵增長(zhǎng)會(huì)從頭生成

- delete清除完表內(nèi)數(shù)據(jù)后,再插入值,主鍵增長(zhǎng)不會(huì)從頭重新計(jì)算
- 另外,delete后面可以跟where限定篩選條件,比truncate更加精準(zhǔn)地刪除數(shù)據(jù)

工作啟示:
- 除上述兩種方法外,drop+create table的思路也做刪除數(shù)據(jù)操作
- 刪除處理“粗暴程度”(也代表“速度”)從高到低依次是:drop-->truncate-->delete
- 只有delete操作可以回滾,更符合業(yè)務(wù)端謹(jǐn)慎操作的要求






CDA考試動(dòng)態(tài)
CDA報(bào)考指南
推薦帖子
0條評(píng)論
1條評(píng)論
0條評(píng)論