Как уже говорили другие, минимальные / максимальные значения, которые может хранить столбец, и объем памяти, который он занимает в байтах, определяется только типом, а не длиной.
Многие из этих ответов говорят о том, что часть (11)
влияет только на ширину экрана, что не совсем верно, но в основном.
Определение int(2)
с нулевое заполнение не указано будет:
- по-прежнему будет принимать значение
100
- все еще отображать значение
100
при выводе (не 0
или 00
) - ширина дисплея будет шириной наибольшего значения, выводимого из запроса выбора.
Единственное, что(2)
сделает , если также указан zerofill :
- , будет показано значение
1
01
. - При отображении значений столбец всегда будет иметь ширину от максимально возможного значения, которое столбец может принять , что составляет 10 цифр для целого числа, вместо минимальной ширины, необходимой для отображения наибольшегозначение, которое должен отображать столбец в этом конкретном запросе выбора, которое может быть намного меньше.
- Столбец все еще может принимать и показывать значение, превышающее длину, но эти значения не будут иметь префикс с 0.
Лучший способ увидеть все нюансы - это запустить:
CREATE TABLE `mytable` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`int1` int(10) NOT NULL,
`int2` int(3) NOT NULL,
`zerofill1` int(10) ZEROFILL NOT NULL,
`zerofill2` int(3) ZEROFILL NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
INSERT INTO `mytable`
(`int1`, `int2`, `zerofill1`, `zerofill2`)
VALUES
(10000, 10000, 10000, 10000),
(100, 100, 100, 100);
select * from mytable;
, который выдаст:
+----+-------+-------+------------+-----------+
| id | int1 | int2 | zerofill1 | zerofill2 |
+----+-------+-------+------------+-----------+
| 1 | 10000 | 10000 | 0000010000 | 10000 |
| 2 | 100 | 100 | 0000000100 | 100 |
+----+-------+-------+------------+-----------+
Обратите внимание, что столбец int1
имеетнамного меньшая ширина дисплея, чем zerofill2
, даже если длина больше.
Этот ответ проверен на MySQL 5.7.12 для Linux и может отличаться или не изменяться для других реализаций.