Почему индекс первичного ключа SQL начинается с 1, а не с 0? - PullRequest
0 голосов
/ 05 декабря 2018

было интересно, почему индекс первичного ключа SQL начинается с 1, а почему не с 0?Есть ли причина?

Я не знаю, является ли это хорошим местом для того, чтобы задать такой вопрос, но не нашел ответа в Интернете.

Ответы [ 3 ]

0 голосов
/ 05 декабря 2018

Подсчет в SQL обычно начинается с "1".Например, операции подстроки подсчитывают символы в строке от 1 (а не 0).row_number() перечисляет строки в группе, начиная с 1 (а не 0).

Причина этого проста.Люди начинают считать с 1 - просто спросите многих четырехлетних.Мы не начинаем считать с нуля, пока не научимся программированию.Как вид, мы отсчитывали от «1» в течение многих тысячелетий, прежде чем добавить ноль к пантеону чисел.

Подсчет от 1 намного более интуитивно понятен, когда вы подсчитываете строки из таблиц: «1» для первой строкитребует небольшого объяснения, особенно для людей, которые не являются программистами.«0» для первой строки требует пояснения.

Это легко забыть, но SQL был разработан для непрограммистов.Большая часть многословия заключается в том, что он предназначен для бизнес-пользователей.

0 голосов
/ 05 декабря 2018

Стандарт sql 4.15.11 Столбцы идентификаторов - https://www.sis.se/api/document/preview/916885/ говорит, что «столбец идентификаторов имеет начальное значение, конечное значение инкремент и параметр цикла», он не говорит, что он должен начинаться с любого конкретного числано поскольку его целью является предоставление уникального номера строки (если он установлен в качестве первичного ключа), то отрицательное начальное значение будет бессмысленным.MYSQL позволит вам установить начальное значение 0, если вы хотите, но я не вижу смысла.На мой взгляд, позволять подпискам массива начинаться с 0 на других языках всегда было глупо, а mysql, имеющий предельное смещение, начинающееся с 0, вызывает досадную несогласованность.

0 голосов
/ 05 декабря 2018

используйте это SET [GLOBAL|SESSION] sql_mode='NO_AUTO_VALUE_ON_ZERO', тогда оно начнется с 0

mysql docs

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...