Числовой тип данных

Числовые данные разделяются на точные и приближенные, на целые и вещественные. В отдельную категорию можно отнести битовые значения.

Точные целые числа

ТипОбъем памятиДиапазон
TINYINT1 байтот -128 до 127 (от -27 до 27-1)
от 0 до 255 (от 0 до 28-1)
SMALLINT2 байтаот -32768 до 32767 (от -215 до 215-1)
от 0 до 65535 (от 0 до 216-1)
MEDIUMINT3 байтаот -223 до 223-1
от 0 до 224-1
INT
INTEGER
(синонимы)
4 байтаот -231 до 231-1
от 0 до 232-1
BIGINT8 байтот -263 до 263-1
от 0 до 264-1

Целые числа могут быть объявлены с ключевым словом UNSIGNED. В этом случае элементам данного столбца нельзя будет присвоить отрицательные значения, а допустимый диапазон, которые принимает тип удваивается. Так, тип TINYINT может принимать значения от -128 до 127, а TINYINT UNSIGNED — от 0 до 255.

Точные вещественные числа

ТипДиапазон
DEC[(M,D)]
DECIMAL[(M,D)]
(синонимы)
Зависит от параметров M и D

Тип DECIMAL хранит точное вещественное значение данных. Он используется, когда точность является критически важной. Например, при хранении финансовых данных.

Пример использования:

MySQL
CREATE TABLE Users (
    ...
    salary DECIMAL(5,2)
);

В данном примере объявляется, что в колонке salary будут храниться числа, имеющие максимум 5 цифр, причём 2 из которых отведены под десятичную часть. То есть, в данной колонке будут храниться значения в промежутке от -999.99 до 999.99.

Синтаксис DECIMAL эквивалентен DECIMAL(M) и DECIMAL(M,0). По умолчанию, параметр M равен 10.

Целая часть и часть после точки хранятся как 2 отдельных целых числа. На основании этого факта можно легко рассчитать затрачиваемый объем памяти. Так у DECIMAL(5,2) целая часть содержит 3 цифры и занимает 2 байта, часть после точки 2 цифры - достаточно 1 байта. Итого, на хранение будет потрачено 3 байта.

Битовые числа

ТипОбъем памятиДиапазон
BIT[(M)]M битОт 1 до 64 битов, в зависимости от значения M
BOOL
BOOLEAN
(синонимы)
1 битЛибо 0, либо 1

Тип данных BIT(M) хранит последовательность битов заданной длины. По умолчанию, длина составляет 8 бит. Если назначаемое значение в колонке с данным типом использует меньше M бит, то происходит дополнение нулями слева. Например, при попытке записать значение b'101' в BIT(6) храниться в итоге будет b'000101'.

Приближенные числа

ТипОбъем памятиДиапазон
FLOAT[(M, D)]4 байтаМинимальное значение ±1.17·10-39
Максимальное значение ±3.4·1038
REAL[(M, D)]
DOUBLE[(M, D)]
(синонимы)
8 байтовМинимальное значение ±2.22·10-308
Максимальное значение ±1.79·10308

Числовые типы данных с плавающей точкой также могут иметь параметр UNSIGNED. Как и в целочисленных типах, этот атрибут предотвращает хранение в отмеченном столбце отрицательных величин, но, в отличие от целочисленных типов, максимальный интервал для величин столбца остаётся прежним.