11.1.6 Атрибуты числовых типов
MySQL поддерживает расширение, позволяющее необязательно указывать ширину отображения целых типов данных в скобках после базового ключевого слова типа. Например, INT(4) задает INT с шириной отображения в четыре цифры. Эта необязательная ширина отображения может использоваться приложениями для отображения целых значений, имеющих ширину меньше указанной для столбца, путем дополнения их пробелами слева. (То есть, эта ширина присутствует в метаданных, возвращаемых наборами результатов. Будет ли она использоваться, зависит от приложения.)
Ширина отображения не ограничивает диапазон значений, которые могут храниться в столбце. Также она не препятствует правильному отображению значений, ширина которых превышает ширину отображения столбца. Например, столбец, указанный как SMALLINT(3), имеет обычный SMALLINT диапазон от -32768 до 32767, а значения, выходящие за пределы диапазона, допускаемого тремя цифрами, отображаются полностью, используя более трёх цифр.
При использовании совместно с необязательным (нестандартным) ZEROFILL атрибутом, стандартное заполнение пробелами заменяется нулями. Например, для столбца, объявленного как INT(4) ZEROFILL, значение 5 извлекается как 0005.
Атрибут ZEROFILL игнорируется для столбцов, участвующих в выражениях или запросах UNION.
Если вы храните значения, превышающие ширину отображения, в цельном столбце, у которого есть атрибут ZEROFILL, у вас могут возникнуть проблемы при генерации временных таблиц MySQL для некоторых сложных объединений. В этих случаях MySQL предполагает, что значения данных помещаются в ширину отображения столбца.
Все целочисленные типы могут иметь необязательный (нестандартный) UNSIGNED атрибут. Беззнаковый тип может использоваться для разрешения только неотрицательных чисел в столбце или при необходимости большего верхнего числового диапазона для столбца. Например, если столбец INT является UNSIGNED, размер диапазона столбца остается тем же, но его крайние точки смещаются вверх, от -2147483648 и 2147483647 до 0 и 4294967295.
Типы с плавающей точкой и фиксированной точкой также могут быть UNSIGNED. Как и в случае с целыми типами, этот атрибут предотвращает хранение отрицательных значений в столбце. В отличие от целых типов, верхний диапазон значений столбца остается неизменным.
Если вы укажете ZEROFILL для числового столбца, MySQL автоматически добавит атрибут UNSIGNED.
Целочисленные или с плавающей точкой типы данных могут иметь атрибут AUTO_INCREMENT. При вставке значения NULL в индексированный AUTO_INCREMENT столбец, столбец устанавливается на следующее значение последовательности. Обычно это , где value+1value - наибольшее значение для столбца, в настоящее время в таблице. (AUTO_INCREMENT последовательности начинаются с 1.)
Хранение 0 в AUTO_INCREMENT столбец имеет тот же эффект, что и хранение NULL, если не включен режим SQL NO_AUTO_VALUE_ON_ZERO.
Вставка NULL для генерации AUTO_INCREMENT значений требует, чтобы столбец был объявлен NOT NULL. Если столбец объявлен NULL, вставка NULL хранит NULL. Когда вы вставляете любое другое значение в AUTO_INCREMENT столбец, столбец устанавливается на это значение, и последовательность сбрасывается, так что следующее автоматически сгенерированное значение следует последовательно за вставленным значением.
Отрицательные значения для AUTO_INCREMENT столбцов не поддерживаются.
© 2025 Oracle
Licensed under the GPLv2 License.