Рассмотрим числовые типы данных, которые используются в SQL.
TINYINT (N)
Тип данных хранит целое число, которое можно объявить положительным, используя ключевое слово UNSIGNED. В таком случае элементам столбца недоступно будет присвоение отрицательного значения.
Параметр N является необязательным и указывает на количество символов, которые отводятся под число.
Атрибут ZEROFILL является необязательным, заполняет по умолчанию свободные позиции нулями.
Занимаемый объем памяти – $1$ байт, диапазон значений – от $0$ до $255$ или от $-128$ до $127$.
TINYINT UNSIGNED – любое число из диапазона от $0$ до $255$.
TINYINT – любое число из диапазона от -$128$ до $127$.
TINYINT ($2$) – указывает на хранение двузначных значений, но хранит и трехзначные значения.
TINYINT ($4$) ZEROFILL заполняет свободные позиции слева нулями. К примеру, значение $5$ будет отображено как $0005$.
SMALLINT (M)
Тип данных, аналогичный предыдущему, но с занимаемым объемом памяти – $2$ байта и диапазоном значений – от $0$ до $65 \ 535$ или от $-32 \ 768$ до $32 \ 767$.
SMALLINT – любое число из диапазона от $-32 \ 768$ до $32 \ 767$.
SMALLINT UNSIGNED – любое число из диапазона от $0$ до $65 \ 535$.
SMALLINT ($3$) – указывает на хранение трехзначных значений, но хранит и четырехзначные значения.
SMALLINT ($3$) ZEROFILL – заполняет свободные позиции слева нулями. К примеру, значение $7$ будет отображено как $007$.
MEDIUMINT (M)
Тип данных, аналогичный предыдущему, но с занимаемым объемом памяти – $3$ байта и диапазоном значений – от $0$ до $16 \ 777 \ 215$ или от $-8 \ 388 \ 608$ до $8 \ 388 \ 608$.
MEDIUMINT – любое число из диапазона от $-8 \ 388 \ 608$ до $8 \ 388 \ 608$.
MEDIUMINT UNSIGNED – любое число из диапазона от $0$ до $16 \ 777 \ 215$.
MEDIUMINT ($4$) – указывает на хранение четырехзначных значений, но хранит и семизначные.
MEDIUMINT ($4$) ZEROFILL – заполняет свободные позиции слева нулями. К примеру, значение $8$ будет отображено как $0008$.
INT (N) или INTEGER (N)
Тип данных, аналогичный предыдущему, но с занимаемым объемом памяти – $4$ байта и диапазоном значений – от $0$ до $4 \ 294 \ 967 \ 295$ или от $-2 \ 147 \ 683 \ 648$ до $2 \ 147 \ 683 \ 648$.
INT – любое число из диапазона от $-2 \ 147 \ 683 \ 648$ до $2 \ 147 \ 683 \ 648$.
INT UNSIGNED – любое число из диапазона от $0$ до $4 \ 294 \ 967 \ 295$.
INT ($5$) – указывает на хранение пятизначных значений, но хранит максимально возможные.
INT ($3$) ZEROFILL – заполняет свободные позиции слева нулями.
BIGINT (N)
Тип данных, аналогичный предыдущему, но с занимаемым объемом памяти – $8$ байт и диапазоном значений – от $0$ до $264$ или от $-263$ до $263-1$.
BIGINT – любое число из диапазона от $-263$ до $263-1$.
BIGINT UNSIGNED – любое число из диапазона от $0$ до $264$.
BIGINT ($5$) – указывает на хранение пятизначных значений, но хранит максимально возможные.
BIGINT ($3$) ZEROFILL – заполняет свободные позиции слева нулями.
BOOL или BOOLEAN
Хранит одно из булевых значений: 0 – ложь (false) или 1 – истина (true).
Занимаемый объем памяти – $1$ байт, диапазон значений – $0$ или $1$.
DECIMAL (N,S), DEC (N,S) или NUMERIC (N,S)
Хранит величины повышенной точности, например, значения денежных данных.
$N$ – количество символов, которые отводятся под число. Максимальным значением для $N$ является $64$.
$S$ – количество знаков после запятой. Максимальным значением для $S$ является $30$.
Занимаемый объем памяти – $N+2$ байта, диапазон значений зависит от параметров $N$ и $S$.
DECIMAL ($4,2$) – хранит числа из диапазона от $-9,99$ до $9,99$.
FLOAT (N,S)
Хранит вещественное число (с плавающей запятой). Может содержать параметр UNSIGNED, который запрещает отрицательные числа, но диапазон значений останется прежним.
$N$ – количество символов, которые отводятся под число.
$S$ – количество символов дробной части.
Занимаемый объем памяти – $4$ байта, диапазон значений – от $+(-) 1,175494351 \cdot 10^{-39}$ до $+(-) 3,402823466 \cdot 10^{38}$.
DOUBLE (N,S)
Тип данных, аналогичный предыдущему, с занимаемым объемом памяти – $8$ байт и диапазоном значений – от $+(-) 2,2250738585072015 \cdot 10^{-308}$ до $+(-) 1,797693134862315 \cdot 10^{308}$.
Обратим внимание, что чем большим является диапазон значений типа данных, тем больше памяти будет он занимать. Правильный выбор типа данных позволит сэкономить место для их хранения.