Лого

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

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.