Данный материал создан для тех, кто только собирается определиться какой тип данных лучше выбрать для хранения значений в БД MySQL.
Целые числа
byte — кол-во байт на хранение, max/min — предельные значения, umax/umin — беззнаковые предельные значения
INTEGER
Тип поля INT использует 4 байта для хранения значения. Минимально значение -2147483648, максимальное 2147483647. Беззнаковый INT (unsigned) хранит значения от 0 до 4294967295.
Тип поля BIGINT использует 4 байта для хранения значения. Минимальное значение -9223372036854775808, максимальное 9223372036854775807. Беззнаковый BIGINT (unsigned) хранит значения от 0 до 18446744073709551615.
Тип поля TINYINT использует 1 байт для хранения значения. Минимальное значение -128, максимальное 127. Беззнаковый TINYINT (unsigned) хранит значения от 0 до 255.
Тип поля SMALLINT использует 1 байт для хранения значения. Минимальное значение -128, максимальное 127. Беззнаковый SMALLINT (unsigned) хранит значения от 0 до 255.
Тип поля MEDIUMINT использует 3 байта для хранения значения. Минимальное значение -8388608, максимальное 8388607. Беззнаковый MEDIUMINT (unsigned) хранит значения от 0 до 16777215.
DECIMAL DECIMAL(M, D) m — кол-во цифр (max 65 цифр), d — сколько из них могут быть после запятой min_byte/max_byte — краевые значения размера поля в байтах, byte_formula — формула вычисления размерности length — максимальное кол-во цифр
Тип поля DECIMAL, DEC, NUMERIC используют от 2 до 67 байтов для хранения значения.
byte — кол-во байт для хранения поля (по-умолчанию) max_byte — максимальное кол-во байт для хранения negative_min/negative_max — минмаксы для отрицательных чисел positive_min/positive_max — минмаксы для положительных чисел
у FLOAT ТОЧНОСТЬ ТОЛЬКО 7 ЦИФР (все остальные цифры «смазываются»)
Тип поля FLOAT использует от 4 до 8 байтов для хранения значения. Минимальное значение для отрицательных чисел -3.402823466E+38, максимальное – -1.175494351E-38. Минимальное значение для положительных чисел 1.175494351E-38, максимальное – 3.402823466E+38.
byte — кол-во байт для хранения поля (по-умолчанию) max_byte — максимальное кол-во байт для хранения negative_min/negative_max — минмаксы для отрицательных чисел positive_min/positive_max — минмаксы для положительных чисел
у DOUBLE ТОЧНОСТЬ ТОЛЬКО 15 ЦИФР (все остальные цифры «смазываются»)
Тип поля DOUBLE использует 8 байтов для хранения значения. Минимальное значение для отрицательных чисел -1.7976931348623157E+308, максимальное – -2.2250738585072014E-308. Минимальное значение для положительных чисел 2.2250738585072014E-308, максимальное – 1.7976931348623157E+308.
byte — кол-во байт отведенных для хранения (можно задать меньше) min_byte — минимальное кол-во байт в которых может храниться поле (если длина равна 1)
В MYSQL 5.0.3 и выше, VARCHAR может быть до 65,535 символов! length — максимальная длина символов в поле
Тип поля VARCHAR, CHAR использует 256 байтов для хранения значения. Минимально – 2 байта. Максимальная длина символов в поле – 255.
Тип данных BLOB представляет собой двоичный объект большого размера, который может содержать переменное количество данных. Существуют 4 модификации этого типа – TINYBLOB, BLOB, MEDIUMBLOB и LONGBLOB, отличающиеся только максимальной длиной хранимых величин.
byte — кол-во байт для хранения поля min_byte — минимальное кол-во байт для хранения одного символа (если длина поля равна 1) length — максимальное количество символов в поле
Тип поля TINYBLOB использует от 2 до 256 байтов для хранения значения. Максимальное количество символов в поле – 255.
Тип данных TEXT также имеет 4 модификации – TINYTEXT, TEXT, MEDIUMTEXT и LONGTEXT, соответствующие упомянутым четырем типам BLOB и имеющие те же максимальную длину и требования к объему памяти. Единственное различие между типами BLOB и TEXT состоит в том, что сортировка и сравнение данных выполняются с учетом регистра для величин BLOB и без учета регистра для величин TEXT. Другими словами, TEXT – это независимый от регистра BLOB.
byte — кол-во байт для хранения поля min_byte — минимальное кол-во байт для хранения одного символа (если длина поля равна 1) length — максимальное количество символов в поле
Тип поля TINYTEXT использует от 2 до 256 байтов для хранения значения. Максимальное количество символов в поле – 255.
ENUM (перечисление) – это столбец, который может принимать значение из списка допустимых значений, явно перечисленных в спецификации столбца в момент создания таблицы.
byte — кол-во байт на хранение поля max_byte — максимальное кол-во байт, которое можно достигнуть при максимальном кол-ве элементов max_number_of_element — кол-во элементов, которое может содержать поле
Тип поля ENUM использует от 1 до 2 байтов для хранения значения. Количество элементов, которое может содержать поле – 65535.
SET – это строковый тип, который может принимать ноль или более значений, каждое из которых должно быть выбрано из списка допустимых значений, определенных при создании таблицы. Элементы множества SET разделяются запятыми. Как следствие, сами элементы множества не могут содержать запятых.
byte — кол-во байт на хранение поля max_byte — максимальное кол-во байт, которое можно достигнуть при максимальном кол-ве элементов max_number_of_element — кол-во элементов, которое может содержать поле
Тип поля SET использует от 1 до 8 байт для хранения значения. Количество элементов, которое может содержать поле – 64.
byte — кол-во байт для хранения значения поля mask — стандартная маска ввода значения min/max — минимальные максимальные значения дат которые сохраняют поля
DATETIME
Тип данных DATETIME используется для величин, содержащих информацию как о дате, так и о времени. MySQL извлекает и выводит величины DATETIME в формате 'YYYY-MM-DD HH:MM:SS'. Поддерживается диапазон величин от '1000–01–01 00:00:00' до '9999–12–31 23:59:59'. («поддерживается» означает, что хотя величины с более ранними временными значениями, возможно, тоже будут работать, но нет гарантии того, что они будут правильно храниться и отображаться).
Тип DATE используется для величин с информацией только о дате, без части, содержащей время. MySQL извлекает и выводит величины DATE в формате 'YYYY-MM-DD'. Поддерживается диапазон величин от '1000–01–01' до '9999–12–31'.
Тип столбца TIMESTAMP обеспечивает тип представления данных, который можно использовать для автоматической записи текущих даты и времени при выполнении операций INSERT или UPDATE. При наличии нескольких столбцов типа TIMESTAMP только первый из них обновляется автоматически.
MySQL извлекает и выводит величины типа TIME в формате 'HH:MM:SS' (или в формате 'HHH:MM:SS' для больших значений часов). Величины TIME могут изменяться в пределах от '-838:59:59' до '838:59:59'.