Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/365.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 为什么MySQL从1开始计数而不是0?_Php_Python_Mysql_Ruby - Fatal编程技术网

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

Php 为什么MySQL从1开始计数而不是0?,php,python,mysql,ruby,Php,Python,Mysql,Ruby,数组的第一个元素(在大多数编程语言中)的id(索引)为0。MySQL表的第一个元素(行)的id(自动递增)为1。后者似乎是例外。您可以将自动增量列的开始设置为任意数字,如下所示: ALTER TABLE tbl AUTO_INCREMENT = 1; ALTER TABLE tbl AUTO_INCREMENT = 10; ALTER TABLE tbl AUTO_INCREMENT = 100; 默认值为1 另见: 我认为主要原因是数据库中的一行不是数组,而自动递增值也不是数组索引意义上的索

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

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

ALTER TABLE tbl AUTO_INCREMENT = 1;
ALTER TABLE tbl AUTO_INCREMENT = 10;
ALTER TABLE tbl AUTO_INCREMENT = 100;
默认值为1

另见:


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

这有点像比较苹果和桔子


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

更好的问题是“为什么数组索引为零?”原因与指针算法有关。数组的索引是相对于指针地址的偏移量。在C++中,给定数组<代码> char x [5 ] < /COD>,表达式<代码> x [ 1 ] <代码>和<代码> *(x+1)< /C> >等效,给出了<代码> siZeof(char)=1</c>>
因此,从1开始的自动递增字段是有意义的。数组和这些字段之间没有真正的相关性。

第0行没有什么关联。然而,第一排是这样的。还有
NO\u AUTO\u VALUE\u ON\u ZERO
设置。自动增量值不会将类似数组的数据结构传递给表,行本身保持不相关和无序。它们所做的只是确保主键的唯一性。不要将它们视为索引数据结构!SQL通常是基于SQL的。此外,在很多语言中,零是错误的,所以如果自动增量从零开始,那么每个人都会抱怨他们不能
if(o.id)
@MichaelBerkowski,任何人的。这不是重点。关键是你的评论没有回答这个问题。它也不能解释为什么你会投票关闭它。@EmanuilRusev:这个问题写得很糟糕。上面甚至没有一个真正的问题。重写它,然后我们可以投票重新打开它。很高兴知道,但为什么会这样?自动递增是一个PK,与数组基于零的编号无关。它可以确保记录是唯一的。您还可以定义一个增量值(n),并使PK增加n。所以如果你从1000开始,增量是10,你会得到101010201030。。。这可能很有趣(与阵列相关):