English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Типы данных MySQL

Определение типов данных полей в MySQL очень важно для оптимизации вашей базы данных.

MySQL поддерживает множество типов, их можно大致分为 три категории: числовые, даты/время и строковые (символьные) типы.

Числовые типы

MySQL поддерживает все стандартные типы данных SQL для чисел.

Эти типы включают строгие числовые типы данных (INTEGER, SMALLINT, DECIMAL и NUMERIC), а также приближенные числовые типы данных (FLOAT, REAL и DOUBLE PRECISION).

Ключевое слово INT является синонимом INTEGER, а ключевое слово DEC является синонимом DECIMAL.

Тип данных BIT сохраняет значения полей бит и поддерживает таблицы MyISAM, MEMORY, InnoDB и BDB.

В качестве расширения стандарта SQL, MySQL также поддерживает целые типы данных TINYINT, MEDIUMINT и BIGINT. В таблице показано необходимое хранение и диапазон каждого целого типа данных.

ТипРазмердиапазон (сигнатурный)диапазон (несигнатурный)Назначение
TINYINT1 byte(-128, 127)(0, 255)маленькие целые значения
SMALLINT2 bytes(-32 768, 32 767)(0, 65 535)длинные целые значения
MEDIUMINT3 bytes(-8 388 608, 8 388 607)(0, 16 777 215)длинные целые значения
INT или INTEGER4 bytes(-2 147 483 648, 2 147 483 647)(0, 4 294 967 295)длинные целые значения
BIGINT8 bytes(-9,223,372,036,854,775,808, 9 223 372 036 854,775,807)(0, 18 446 744 073 709 551 615)极大整数值
FLOAT4 bytes(-3.402 823 466 E+38, -1.175 494 351 E-38), 0, (1.175 494 351 E-38, 3.402 823 466 351 E+38)0, (1.175 494 351 E-38, 3.402 823 466 E+38)одинарная точность
Числа с плавающей запятой
DOUBLE8 bytes(-1.797 693 134 862 315 7 E+308, -2.225 073 858 507 201 4 E-308), 0, (2.225 073 858 507 201 4 E-308, 1.797 693 134 862 315 7 E+308)0, (2.225 073 858 507 201 4 E-308, 1.797 693 134 862 315 7 E+308)Двухпоточный
Числа с плавающей запятой
DECIMALДля DECIMAL(M,D), если M>D, то M+2,否则 D+2зависит от значений M и Dзависит от значений M и DДробные числа

Типы дат и времени

Типы дат и времени, представляющие значения времени, это DATETIME, DATE, TIMESTAMP, TIME и YEAR.

У каждого временного типа есть диапазон значений и "нулевое" значение, которое используется при указании значения, которое MySQL не может представить.

Тип TIMESTAMP имеет专用ные функции автоматического обновления, которые будут описаны позже.

ТипРазмер
(байты)
ОбластьФорматНазначение
DATE31000-01-01/9999-12-31YYYY-MM-DDЗначение даты
TIME3'-838:59:59'/'838:59:59'HH:MM:SSЗначение времени или продолжительность
YEAR11901/2155YYYYЗначение года
DATETIME81000-01-01 00:00:00/9999-12-31 23:59:59YYYY-MM-DD HH:MM:SSСмешанные значения даты и времени
TIMESTAMP4

1970-01-01 00:00:00/2038

Время окончания - это 2147483647 Секунды,北京时间 2038-1-19 11:14:07Гринвичское время 19 января 2038 года凌晨 03:14:07

YYYYMMDD HHMMSSСмешанные значения даты и времени, временные метки

Строковые типы

Строковые типы указывают CHAR, VARCHAR, BINARY, VARBINARY, BLOB, TEXT, ENUM и SET. Этот раздел описывает, как эти типы работают и как их использовать в запросах.

ТипРазмерНазначение
CHAR0-255 байтСтрока фиксированной длины
VARCHAR0-65535 байтПеременная строка
TINYBLOB0-255 байтБинарная строка не более 255 символов
TINYTEXT0-255 байтКороткий текстовый строка
BLOB0-65 535 байтТекст данных в двоичном формате длинный
TEXT0-65 535 байтДлинный текст данных
MEDIUMBLOB0-16 777 215 байтТекст данных в двоичном формате中等长度
MEDIUMTEXT0-16 777 215 байтТекст данных中等长度
ДЛИННЫЙ BLOB0-4 294 967 295 байтТекст данных в двоичном формате
ДЛИННЫЙ ТЕКСТ0-4 294 967 295 байтОбширные текстовые данные

ВниманиеВ char(n) и varchar(n) количество n в скобках代表着 количество символов, а не количество байтов, например, CHAR(30) может хранить 30 символов.

CHAR и VARCHAR аналогичны, но они сохраняются и извлекаются по-разному. Их максимальная длина и то, сохраняются ли пробельные символы в конце, различны. В процессе хранения или извлечения не выполняется преобразование регистров.

BINARY и VARBINARY подобны CHAR и VARCHAR, но они содержат байтовые строки, а не строковые значения. То есть, они содержат строковые строки, а не символы. Это означает, что у них нет набора символов, и сортировка и сравнение основаны на числовых значениях байтов значений столбца.

BLOB - это двоичный большой объект, который может содержать переменное количество данных. Есть 4 типа BLOB: TINYBLOB, BLOB, MEDIUMBLOB и LONGBLOB. Они отличаются разным диапазоном хранения.

Есть 4 типа TEXT: TINYTEXT, TEXT, MEDIUMTEXT и LONGTEXT. Соответствующие 4 типа BLOB, максимальная длина которых различна, можно выбирать в зависимости от实际情况.