MySQL datatypes - почему существует число после int: int (11)

В соответствии с mySQL Docs тип данных int (подписанный) имеет диапазон от -2147483648 до 2147483647. Когда я создаю таблицу с phpMyAdmin, и экспортируйте структуру таблицы, она показывает следующее:

`unit_id` int(11) NOT NULL

Почему (11)? Не int сообщает mySQL все, что нужно знать?

Ответ 1

Это дополнительный атрибут width, который может использоваться приложениями для отображения значения.

Чтобы процитировать документацию:

MySQL поддерживает расширение для необязательного указания отображения ширина целых типов данных в круглых скобках, следующих за ключевым словом base для типа. Например, INT(4) указывает INT с дисплей ширина четырех цифр. Эта дополнительная ширина экрана может использоваться приложения для отображения целочисленных значений, имеющих ширину, меньшую ширину, указанную для столбца, с левым заполнением их пробелами. (Что эта ширина присутствует в метаданных, возвращаемых с наборами результатов. Используется ли оно или нет, зависит от приложения.)

Ширина экрана не ограничивает диапазон значений, которые могут быть хранится в столбце. Он также не препятствует значениям, превышающим столбец отображаемая ширина отображается правильно. Например, столбец указанный как SMALLINT(3) имеет обычный SMALLINT диапазон от -32768 до 32767, а значения вне диапазона, допустимого тремя цифрами, отображается полностью, используя более трех цифр.

Ответ 2

Определяет ширину экрана, возвращаемую с помощью набора результатов. Он не влияет на размер хранилища.