在大多数编程语言中,数组的第一个元素的id(索引)为0。MySQL表格的第一行(元素)具有1个(自动增加的)id。后者似乎是个例外。
char x [5]
,表达式x [1]
和*(x + 1)
是等价的,前提是sizeof(char) == 1
。
因此,从1开始自动递增的字段是有意义的。数组和这些字段之间没有真正的关联。您可以将自动增量列的起始值设置为任何数字,如下所示:
ALTER TABLE tbl AUTO_INCREMENT = 1;
ALTER TABLE tbl AUTO_INCREMENT = 10;
ALTER TABLE tbl AUTO_INCREMENT = 100;
http://dev.mysql.com/doc/refman/5.1/en/example-auto-increment.html
我认为主要原因是数据库中的一行不是一个数组,自增值也不是索引,就像数组索引一样。主键ID可以是任何值,而且在很大程度上,它只需要是唯一的,不能保证是其他任何值(例如,您可以删除一行,它不会重新编号)。
这有点像比较苹果和橙子!
数组从0开始,因为那是第一个数字。自增字段从任何你想要的数字开始,但在这种情况下,我们都希望它是1。
NO_AUTO_VALUE_ON_ZERO
设置。http://dev.mysql.com/doc/refman/5.0/en/server-sql-mode.html#sqlmode_no_auto_value_on_zero - hank