Spec-Zone.ru › MySQL 5.7

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+1, где value - наибольшее значение для столбца, в настоящее время в таблице. (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.
https://docs.oracle.com/cd/E17952_01/mysql-5.7-en/numeric-type-attributes.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API