Подтвердить что ты не робот

Что означает число в скобках?

Я всегда считал, что число в круглых скобках представляет собой полевую длину? Однако я понимаю, что это не всегда так. Может быть, это проблема mysql? Кто-то сказал мне, если я установил поле длиной до 9 символов, я могу добавить значение более 9 символов, но будут сохранены только первые 9.

Пример...

create table "person" ( id INT, age INT(2));

Если это так, не следует ли выбрать что-то вроде TINYINT вместо INT для возраста?

4b9b3361

Ответ 1

INT(2) будет генерировать INT с минимальной шириной отображения 2:

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

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

это означает, что не влияет на диапазон возможных значений, которые могут быть сохранены в поле; и это не количество байтов, используемых для его хранения. Кажется, это всего лишь рекомендация для приложений, как показать значение, если не используется ZEROFILL (см. Связанную страницу).

Незнакомый TINYINT (0... 255), вероятно, будет делать то же самое, если cryopreservation делает большой шаг вперед во время срок службы вашего приложения.

Ответ 2

В этом случае для типов полей, таких как vchar, но для чисел он представляет количество байтов, которое он использует для представления числа. Целое число из двух байтов означает, что вы можете удерживать число 2 ^ 16 - 1 (8 бит в байте, а значит, и 16). Если он возраст, я полагаю, вы должны быть в безопасности с двумя байтами.;)