Возник вопрос о последствиях превышения длины поля, к примеру возьмем поле id primary key, длина 11, тип таблицы InnoDB, что должно произойти? В качестве эксперимента создал таблицу, установил длину поля 1 для id, начал добавлять записи, по сути после значения 9 должно что-то произойти, но значение пошло далее расти - 10, 11... (что имеет длину 2, т.е. превысили указанное). Получается длина поля влияет только на занимаемую память, но никак не на его значения?
Размер, указываемый для поля типа int, не влияет на значения. И - как следствие - не влияет и на занимаемую память. Непонятно, с чего вы решили обратное.
Если поле типа int(1) позволяет сохранить значение 4294967295, то естественно, что и памяти оно будет занимать те же 4 байта, что и int(10)
Цифра эта ни на что не влияет, и имеет скорее декоративное значение.
Если хотите сократить память/предельное значение, то используйте другой тип поля -
TINYINT занимает 1 байт, до 255
SMALLINT занимает 2 байта, до 65535
MEDIUMINT - 3 байта, до 16777215
Да, я уже понял что, подразумевал что как и у varchar длина влияет на содержимое, и что-то должно происходить при его превышении. суть типа int понял, благодарю за дополнительное разъяснение
По умолчанию лучше ставить максимальную длину поля, то есть его не ограничивать. На расход памяти это никак не влияет. Значение это начнёт иметь только когда вы будете делать индекс по полю. Чаще такое с varchar может встретиться, если индекс будет из нескольких полей такого типа - придётся ограничивать длину их значений, чтобы вместилось это всё в сумме в индекс.