English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Определение типов данных полей в 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. В таблице показано необходимое хранение и диапазон каждого целого типа данных.
Тип | Размер | диапазон (сигнатурный) | диапазон (несигнатурный) | Назначение |
---|---|---|---|---|
TINYINT | 1 byte | (-128, 127) | (0, 255) | маленькие целые значения |
SMALLINT | 2 bytes | (-32 768, 32 767) | (0, 65 535) | длинные целые значения |
MEDIUMINT | 3 bytes | (-8 388 608, 8 388 607) | (0, 16 777 215) | длинные целые значения |
INT или INTEGER | 4 bytes | (-2 147 483 648, 2 147 483 647) | (0, 4 294 967 295) | длинные целые значения |
BIGINT | 8 bytes | (-9,223,372,036,854,775,808, 9 223 372 036 854,775,807) | (0, 18 446 744 073 709 551 615) | 极大整数值 |
FLOAT | 4 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) | одинарная точность Числа с плавающей запятой |
DOUBLE | 8 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 имеет专用ные функции автоматического обновления, которые будут описаны позже.
Тип | Размер (байты) | Область | Формат | Назначение |
---|---|---|---|---|
DATE | 3 | 1000-01-01/9999-12-31 | YYYY-MM-DD | Значение даты |
TIME | 3 | '-838:59:59'/'838:59:59' | HH:MM:SS | Значение времени или продолжительность |
YEAR | 1 | 1901/2155 | YYYY | Значение года |
DATETIME | 8 | 1000-01-01 00:00:00/9999-12-31 23:59:59 | YYYY-MM-DD HH:MM:SS | Смешанные значения даты и времени |
TIMESTAMP | 4 | 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. Этот раздел описывает, как эти типы работают и как их использовать в запросах.
Тип | Размер | Назначение |
---|---|---|
CHAR | 0-255 байт | Строка фиксированной длины |
VARCHAR | 0-65535 байт | Переменная строка |
TINYBLOB | 0-255 байт | Бинарная строка не более 255 символов |
TINYTEXT | 0-255 байт | Короткий текстовый строка |
BLOB | 0-65 535 байт | Текст данных в двоичном формате длинный |
TEXT | 0-65 535 байт | Длинный текст данных |
MEDIUMBLOB | 0-16 777 215 байт | Текст данных в двоичном формате中等长度 |
MEDIUMTEXT | 0-16 777 215 байт | Текст данных中等长度 |
ДЛИННЫЙ BLOB | 0-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, максимальная длина которых различна, можно выбирать в зависимости от实际情况.