13.1.1 Синтаксис числовых типов данных
Для целочисленных типов данных M указывает минимальную ширину отображения. Максимальная ширина отображения составляет 255. Ширина отображения не связана с диапазоном значений, которые может хранить тип, как описано в разделе 13.1.6 «Атрибуты числовых типов».
Для чисел с плавающей запятой и чисел с фиксированной запятой M — это общее количество цифр, которые могут быть сохранены.
Атрибут ширины отображения устарел для целочисленных типов данных; ожидается, что поддержка будет удалена в будущих версиях MySQL.
Если вы зададите ZEROFILL для числового столбца, MySQL автоматически добавляет атрибут UNSIGNED к столбцу.
Атрибут ZEROFILL устарел для числовых типов данных; ожидается, что поддержка будет удалена в будущих версиях MySQL. Рассмотрите использование альтернативных способов достижения эффекта этого атрибута. Например, приложения могут использовать функцию LPAD() для заполнения чисел нулями до желаемой ширины или хранить отформатированные числа в столбцах CHAR.
Числовые типы данных, допускающие атрибут UNSIGNED, также допускают SIGNED. Однако эти типы данных по умолчанию имеют знак, поэтому атрибут SIGNED не оказывает никакого влияния.
Атрибут UNSIGNED устарел для столбцов типа FLOAT, DOUBLE и DECIMAL (и любые их синонимы); ожидается, что поддержка будет удалена в будущих версиях MySQL. Рассмотрите использование простого ограничения CHECK вместо этого для таких столбцов.
SERIAL является псевдонимом для BIGINT
UNSIGNED NOT NULL AUTO_INCREMENT UNIQUE.
SERIAL DEFAULT VALUE в определении целочисленного столбца является псевдонимом для NOT NULL AUTO_INCREMENT
UNIQUE.
При использовании вычитания между целочисленными значениями, где одно имеет тип UNSIGNED, результат является беззнаковым, если не включен режим SQL NO_UNSIGNED_SUBTRACTION. См. раздел 14.10 «Функции и операторы приведения типов».
-
Тип значения бита.
Mуказывает количество битов на значение, от 1 до 64. По умолчанию значение равно 1, еслиMопущено. -
Очень маленькое целое число. Диапазон со знаком от
-128до127. Беззнаковый диапазон от0до255. -
Эти типы являются синонимами для INTEGER. Значение нуль считается ложным. ненулевые значения считаются истинными:
mysql>
SELECT IF(0, 'true', 'false');+------------------------+ | IF(0, 'true', 'false') | +------------------------+ | false | +------------------------+ mysql>SELECT IF(1, 'true', 'false');+------------------------+ | IF(1, 'true', 'false') | +------------------------+ | true | +------------------------+ mysql>SELECT IF(2, 'true', 'false');+------------------------+ | IF(2, 'true', 'false') | +------------------------+ | true | +------------------------+Однако значения
TRUEиFALSEявляются всего лишь псевдонимами для1и0соответственно, как показано здесь:mysql>
SELECT IF(0 = FALSE, 'true', 'false');+--------------------------------+ | IF(0 = FALSE, 'true', 'false') | +--------------------------------+ | true | +--------------------------------+ mysql>SELECT IF(1 = TRUE, 'true', 'false');+-------------------------------+ | IF(1 = TRUE, 'true', 'false') | +-------------------------------+ | true | +-------------------------------+ mysql>SELECT IF(2 = TRUE, 'true', 'false');+-------------------------------+ | IF(2 = TRUE, 'true', 'false') | +-------------------------------+ | false | +-------------------------------+ mysql>SELECT IF(2 = FALSE, 'true', 'false');+--------------------------------+ | IF(2 = FALSE, 'true', 'false') | +--------------------------------+ | false | +--------------------------------+Последние два утверждения отображают результаты, показанные потому, что
2не равно ни1, ни0. -
Малое целое число. Диапазон со знаком от
-32768до32767. Беззнаковый диапазон от0до65535. -
Целое число среднего размера. Диапазон со знаком от
-8388608до8388607. Беззнаковый диапазон от0до16777215. -
Целое число обычного размера. Диапазон со знаком от
-2147483648до2147483647. Беззнаковый диапазон от0до4294967295. -
Этот тип является синонимом для INT.
-
Большое целое число. Диапазон со знаком от
-9223372036854775808до9223372036854775807. Беззнаковый диапазон от0до18446744073709551615.SERIALявляется псевдонимом дляBIGINT UNSIGNED NOT NULL AUTO_INCREMENT UNIQUE.Необходимо учитывать некоторые моменты, касающиеся столбцов типа BIGINT:
-
Все арифметические операции выполняются с использованием знаковых BIGINT или DOUBLE значений, поэтому следует избегать использования беззнаковых больших целых чисел, превышающих
9223372036854775807(63 бита), за исключением использования битовых функций! В противном случае некоторые из последних цифр в результате могут быть неверными из-за ошибок округления при преобразовании значения типа BIGINT в значение типа DOUBLE.MySQL может обрабатывать BIGINT в следующих случаях:
Вы всегда можете сохранить точное целое значение в столбце типа BIGINT, сохранив его в виде строки. В этом случае MySQL выполняет преобразование строки в число, которое не включает промежуточного представления двойной точности.
Операторы -, + и * используют целочисленную арифметику, когда оба операнда являются целыми значениями. Это означает, что если вы умножаете два больших целых числа (или результаты от функций, возвращающих целые числа), вы можете получить неожиданные результаты, если результат больше
9223372036854775807.
-
-
Упакованное «точное» число с фиксированной точкой.
M— это общее количество цифр (точность), аD— количество цифр после десятичной точки (масштаб). Десятичная точка и (для отрицательных чисел) знак не учитываются вM. ЕслиDравно 0, значения не имеют десятичной точки или дробной части. Максимальное количество цифр (M) для DECIMAL составляет 65. Максимальное количество поддерживаемых десятичных знаков (D) — 30. ЕслиDопущено, значение по умолчанию — 0. ЕслиMопущено, значение по умолчанию — 10. (Существует также ограничение на длину текста литералов DECIMAL; см. раздел 14.25.3 «Обработка выражений».)UNSIGNED, если указано, запрещает отрицательные значения. АтрибутUNSIGNEDустарел для столбцов типа DECIMAL (и любых синонимов); ожидается, что поддержка его будет удалена в будущих версиях MySQL. Вместо этого для таких столбцов следует использовать простое ограничениеCHECK.Все основные вычисления (
+, -, *, /) со столбцами DECIMAL выполняются с точностью 65 цифр. -
Эти типы являются синонимами для DECIMAL. Синоним NUMERIC доступен для совместимости с другими системами баз данных.
-
FLOAT[(M,D)] [UNSIGNED] [ZEROFILL]Малое (однобайтовое) число с плавающей запятой. Допустимые значения — от
-3.402823466E+38до-1.175494351E-38,0и от1.175494351E-38до3.402823466E+38. Это теоретические пределы, основанные на стандарте IEEE. Фактический диапазон может быть немного меньше в зависимости от вашего оборудования или операционной системы.M— общее количество цифр, аD— количество цифр после запятой. ЕслиMиDопущены, значения хранятся в пределах, разрешённых оборудованием. Число с плавающей запятой одинарной точности имеет точность примерно 7 десятичных знаков.FLOAT(— нестандартное расширение MySQL. Этот синтаксис устарел, и ожидается, что поддержка будет удалена в будущих версиях MySQL.M,D)UNSIGNED, если указано, запрещает отрицательные значения. АтрибутUNSIGNEDустарел для столбцов типаFLOAT(и любых синонимов), и ожидается, что поддержка будет удалена в будущих версиях MySQL. Для таких столбцов рассмотрите использование простого ограниченияCHECK.Использование
FLOATможет привести к неожиданным проблемам, так как все вычисления в MySQL выполняются с двойной точностью. См. Раздел B.3.4.7, «Решение проблем с отсутствием совпадений строк». -
FLOAT(p) [UNSIGNED] [ZEROFILL]Число с плавающей запятой.
pпредставляет точность в битах, но MySQL использует это значение только для определения, использоватьFLOATилиDOUBLEдля результирующего типа данных. Еслиpот 0 до 24, тип данных становитсяFLOATбезMилиDзначений. Еслиpот 25 до 53, тип данных становитсяDOUBLEбезMилиDзначений. Диапазон результирующего столбца такой же, как для однобайтовогоFLOATили двойногоDOUBLEтипов данных, описанных ранее в этом разделе.UNSIGNED, если указано, запрещает отрицательные значения. АтрибутUNSIGNEDустарел для столбцов типаFLOAT(и любых синонимов), и ожидается, что поддержка будет удалена в будущих версиях MySQL. Для таких столбцов рассмотрите использование простого ограниченияCHECK.Синтаксис
FLOAT(предоставлен для совместимости с ODBC.p) -
DOUBLE[(M,D)] [UNSIGNED] [ZEROFILL]Число с плавающей запятой нормального размера (двойной точности). Допустимые значения — от
-1.7976931348623157E+308до-2.2250738585072014E-308,0и от2.2250738585072014E-308до1.7976931348623157E+308. Это теоретические пределы, основанные на стандарте IEEE. Фактический диапазон может быть немного меньше в зависимости от вашего оборудования или операционной системы.M— общее количество цифр, аD— количество цифр после запятой. ЕслиMиDопущены, значения хранятся в пределах, разрешённых оборудованием. Число с плавающей запятой двойной точности имеет точность примерно 15 десятичных знаков.DOUBLE(— нестандартное расширение MySQL; устарело. Ожидается, что поддержка этого синтаксиса будет удалена в будущих версиях MySQL.M,D)UNSIGNED, если указано, запрещает отрицательные значения. АтрибутUNSIGNEDустарел для столбцов типаDOUBLE(и любых синонимов), и ожидается, что поддержка будет удалена в будущих версиях MySQL. Для таких столбцов рассмотрите использование простого ограниченияCHECK. -
DOUBLE PRECISION[(,M,D)] [UNSIGNED] [ZEROFILL]REAL[(M,D)] [UNSIGNED] [ZEROFILL]Эти типы являются синонимами для
DOUBLE. Исключение: если включен SQL-режимREAL_AS_FLOAT,REALявляется синонимом дляFLOAT, а не дляDOUBLE.
© 2025 Oracle
Licensed under the GPLv2 License.