mysql5.7 delete与truncate方式删除自增字段表的测试

数据库版本:

mysql> select version();
±-----------+
| version() |
±-----------+
| 5.7.29-log |
±-----------+

测试表

create table test_inr(id int auto_increment primary key,name varchar(20));
mysql> desc test_inr ;
±------±------------±-----±----±--------±---------------+
| Field | Type | Null | Key | Default | Extra |
±------±------------±-----±----±--------±---------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| name | varchar(20) | YES | | NULL | |
±------±------------±—±----±--------±---------------+

测试场景:delete 删除方式

mysql> insert into test_inr values(1,‘aa’);
mysql> insert into test_inr values(2,‘bb’),(3,‘cc’),(4,‘dd’);
Query OK, 3 rows affected (0.00 sec)
Records: 3 Duplicates: 0 Warnings: 0

mysql> select * from test_inr;
±—±-----+
| id | name |
±—±-----+
| 1 | aa |
| 2 | bb |
| 3 | cc |
| 4 | dd |
±—±-----+
mysql> delete from test_inr;
删除数据后,再次插入记录
mysql> insert into test_inr values(0,‘aa’);
mysql> insert into test_inr values(1,‘bb’);
mysql> insert into test_inr(name) values(‘cc’);
现在的记录值是多少呢?
mysql> select * from test_inr;
±—±-----+
| id | name |
±—±-----+
| 1 | bb |
| 5 | aa |
| 6 | cc |
±—±-----+

测试场景:truncate 删除方式

接着上面的测试记录,进行truncate删除方式
mysql> truncate table test_inr;
mysql> insert into test_inr values(0,‘aa’);、
aa对应的id值时多少呢?
mysql> insert into test_inr(name) values(‘cc’);
cc对应的id值时多少呢
mysql> insert into test_inr values(8,‘bb’);
手动插入自增字段执行
mysql> insert into test_inr(name) values(‘yy’);
那么yy对应的id值时多少呢
mysql> select * from test_inr;
±—±-----+
| id | name |
±—±-----+
| 1 | aa |
| 2 | cc |
| 8 | bb |
| 9 | yy |
±—±-----+

测试结论:

1、delete删除业务表数据时,自增字段值的不会备清空
2、truncate删除业务表时,会清空自增字段值
3、对于自增字段为主键的情况,插入0或null时,会使用自增字段值。
4、对于自增字段,可以进行手动插入值,但会造成空洞

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值