MySQL 在没有 WHERE 的情况下删除后自动增加值

标签 mysql auto-increment sql-delete

跑完后发现

DELETE FROM tablename

我的 ID(自动递增)值变得很奇怪

7, 8, 9, 0, 1, 12, 3, 4, 15 

当我做 a 时按这个顺序,

SELECT * FROM tablename

我知道认证指南说用DELETE without WHERE清空表时ID可能会重置也可能不会重置,但是是什么导致ID序列如此奇怪?我很确定这是插入行的顺序。最初在删除之前,我在表中有 6 行,所以 7、8、9 似乎是可以理解的。

最佳答案

如果没有 order by 子句,数据库中绝对没有顺序或顺序保证。这与记录的存储方式有关——它们不按任何顺序存储。数据库通常会根据聚簇索引优化其存储数据的方式,但每个数据库存储数据的方式略有不同。

您永远、永远、永远都不应该认为您会有一个可重复的订单,除非您使用order by 子句。

看来您的 ID 已被收回。这个顺序绝对没有什么奇怪的——你实际上首先选择了一个伪随机顺序。

关于MySQL 在没有 WHERE 的情况下删除后自动增加值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1417737/

相关文章:

mysql - 在 MySQL 中更新时出错

php - 在 PHP 中上传和保存多个图像

php - 对于每个选择的表单选项,添加到 mysql

php - 将 SELECT @ 变量从 SQL 发送到 PHP

mysql 添加自动增量和附加键

macros - 宏,自动给值加一

mysql - 删除第n行mysql

mysql - 什么时候使用关系数据库结构?

java - autonicrement berkeley db,或列表

sql - 如何删除不在其中的记录