14.09.2024
MySQL поддерживает несколько типов числовых данных. Их можно разделить на следующие категории:
- Целые числа - INTEGER
- Числа с фиксированной точкой - DECIMAL
- Числа с плавающей точкой - FLOAT, DOUBLE
Целые числа INTEGER
Здесь мы храним числа без точек, запятых, дробной части и прочей шелухи. Места они занимают от 1 до 8 байт. Выделяют такие типы целых чисел:
- TINYINT - 1 байт
- SMALLINT - 2 байта
- MEDIUMINT - 3 байта
- INT - 4 байта
- BIGINT - 8 байт
Диапазоны чисел каждого типа расписывать не буду. Можно нагуглить свободно. Допишу лишь некоторое дополнение для себя.
Можно любое число сделать типом BIGINT, например, ограничений нет. Но смотри, ты пришел в магазин купить буханку хлеба и у тебя выбор взять корзинку или тележку. Можно конечно тележку выбрать, тебе руку не отрежут. Вопрос в рациональности - зачем тебе под маленький предмет огромный контейнер / область хранения.
По такому же принципу подбирай тип под число. Для 120 лучше выбрать TINYINT и места будет занимать 1 байт, нежели BIGINT и объем памяти будет 8 байт.
Числа с фиксированной точкой DECIMAL
Используется для хранения точных числовых значений аля денежные суммы. Он позволяет указать общее количество разрядов (точность) и количество разрядов справа от точки (масштаб) - DECIMAL(<точность>, <масштаб>).
Числа с плавающей точкой (FLOAT, DOUBLE)
Оба эти типа используются для хранения каких-то приближенных значений. FLOAT занимает 4 байта и имеет точность до 8 знаков. DOUBLE занимает в памяти 8 байт и может вмещать до 16 знаков.
Космические диапазоны эти типов также не буду указывать. Выбор между этими товарищами зависит от требуемой точности и диапазона значений. Для хранения денежных сумм рекомендуется использовать DECIMAL, для других приближенных значений - FLOAT или DOUBLE.