Типы данных в MySQL

Некоторые разработчики(в том числе и я) не помнят наизусть все типы часто используемых полей в MySQL, поэтому я решил сделать памятку с этой, действительно полезной информацией.

Целочисленные типы данных

Тип Байт Диапазон
TINYINT 1 -128 ... +127
SMALLINT 2 -32 768 ... +32 767
MEDIUMINT 3 -8 388 608 ... +8 388 607
INT 4 -2 147 483 648 ... +2 147 483 647
BIGINT 8 -9 223 372 036 854 775 808 ... +9 223 372 036 854 775 807
(Важно!) Многие указывают тип, как INT(11) и думают, что если написать INT(2), то поле будет занимать меньше места и сможет содержать максимум двухзначное число, ЭТО НЕ ТАК!
Число в скобках после типа поля указывает лишь на количество символов, которые будут возвращены из БД, если полю указан атрибут ZEROFIL или UNSIGNED ZEROFILL, этот атрибут добавляет нули к возвращаемому числу до величины, указанной в скобках после типа поля, например, если поле объявлено как INT(8) ZEROFIL и добавлено значение 666, то при SELECT этого поля будет возвращено значение "00000666".

Помните, что если указать числовому полю аттрибут [UNSIGNED], то поле не сможет содержать отрицательных значений, зато максимальное значение будет в ДВА РАЗА БОЛЬШЕ!

Числа с плавающей запятой

Тип Описание Диапазон
FLOAT Одинарная точность.
Не может быть числом без знака.
–3.402823466E+38 ... –1.175494351E-38
DOUBLE,
DOUBLE PRECISION
Двойная точность -1.7976931348623157E+308 ... -2.2250738585072014E-308
REAL То же, что и DOUBLE
DECIMAL Дробное число, хранящееся в виде строки Работает подобно типу данных CHAR, число хранится в виде строки, используя один символ для каждой цифры-значения. Символ десятичной запятой и символ отрицательного числа "-" не учитывается в длину. Если десятичное значение равно 0, значение не будет иметь десятичной запятой или дробной части. Максимальный размер для DECIMAL значение такое же, как и для DOUBLE, но фактический диапазон для данного столбца DECIMAL может быть ограничен в выборе длины и десятичные дроби.
NUMERIC То же, что и DECIMAL
Формат следующий: ТИП(ДЛИНА, ЗНАКИ). Длина - количество знаков до запятой, Знаки - количество знаков после запятой.

Строки

Тип Диапазон
Описание
VARCHAR 0 ... 255
(с 5.0.3 уже 0 ... 65 535)
Занимает ровно столько байт, сколько символов хранится в значении +1 байт для хранения количества занимаемых символов.
В скобках указывает максимально допустимое число хранимых символов.
CHAR 0 ... 255
Занимает ровно столько байт, сколько указано в скобках при создании поля.
В отличии от VARCHAR, всегда занимает одинаковое количество байт, и не занимает один лишний байт для хранения длины значения.
TINYTEXT 255 символов
TINYBLOB - регистрозависимая альтернатива.
TEXT 65 535 символов BLOB - регистрозависимая альтернатива.
MEDIUMTEXT 16 777 215 символов
MEDIUMBLOB - регистрозависимая альтернатива.
LONGTEXT 4 294 967 295 символов LONGBLOB - регистрозависимая альтернатива.
При поиске по этим типам строковых данных не учитывается регистр символов, для учёта регистра нужно при объявлении поля указать ему атрибут BINARY(для типов VARCHAR и CHAR), либо использовать регистрозависимые альтернативы из описания.

Дата и время

Тип Описание
DATE Дата в формате ГГГГ-ММ-ДД
TIME Время в формате ЧЧ:ММ:СС
TIMESTAMP Дата и время (хранится в формате timestamp), выводится в виде ГГГГ-ММ-ДД ЧЧ:ММ:СС
DATETIME Дата и время в формате ГГГГ-ММ-ДД ЧЧ:ММ:СС

Если будут вопросы - пишите в комментариях, отвечу всем.

Comments (0)


Leave a comment