为什么MySQL从1开始计数而不是0?

时间:2013-02-24 18:40:33

标签: php python mysql ruby

数组的第一个元素(在大多数编程语言中)的id(索引)为0. MySQL表的第一个元素(行)具有(自动递增)id为1.后者似乎是例外。

3 个答案:

答案 0 :(得分:3)

更好的问题是“为什么数组是零索引的?”原因与指针算法有关。数组的索引是相对于指针地址的偏移量。在C ++中,给定数组char x[5],表达式x[1]*(x + 1)是等价的,给定sizeof(char) == 1

因此从1开始的自动增量字段是有意义的。数组和这些字段之间没有真正的相关性。

答案 1 :(得分:1)

您可以将自动增量列的开头设置为任意数字,如下所示:

ALTER TABLE tbl AUTO_INCREMENT = 1;
ALTER TABLE tbl AUTO_INCREMENT = 10;
ALTER TABLE tbl AUTO_INCREMENT = 100;

默认值为1.

另见:

http://dev.mysql.com/doc/refman/5.1/en/example-auto-increment.html

答案 2 :(得分:0)

我认为主要原因是数据库中的行不是数组,并且自动增量值在数组索引的意义上不是索引。主键id可以是任何值,并且在很大程度上它是唯一必要的,它是唯一的并且不保证是其他任何东西(例如,你可以删除一行而不会重新编号)。

这有点像比较苹果和橘子!

数组从0开始,因为这是第一个数字。 Autoinc字段从你想要的任何数字开始,在这种情况下,我们都宁愿它是1。