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