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

Типы данных MySQL

Следующие разделы описывают поддерживаемые MySQL типы данных.

Типы данных MySQL

MySQL поддерживает три типа данных:строки,числовыеиДата/времяТип данных.

Тип данных строки

Тип данных строки обычно используется для хранения имен, адресов, описаний или любого значения, содержащего буквы и цифры, включая двоичные данные, такие как изображения или аудиофайлы.

Типы данных CHAR и VARCHAR

Тип данных CHAR позволяет хранить строки фиксированной длины до 255 символов. Тип данных VARCHAR позволяет хранить строки переменной длины до 65,535 символов (до MySQL 5.0.3 ограничено 255 символами).

Длина, указанная в декларации типа данных CHAR и VARCHAR, означает максимальное количество символов, которое можно хранить. Например, CHAR(5) может容纳 до 5 символов.

Основное различие между типами данных CHAR и VARCHAR заключается в способе хранения данных. Когда значения хранятся в столбце CHAR, они заполняются пробелами справа до заданной длины, но в столбце VARCHAR значения не заполняются. Это означает, что если значение "ab" CHAR(4) хранится в столбце VARCHAR(4), то значение будет храниться как "ab", а аналогичное значение будет храниться как "ab".

Совет:Используйте тип данных CHAR для хранения значений с фиксированной длиной, например, коды стран/регионов. Для значений с переменной длиной, таких как имена или заголовки, VARCHAR может сэкономить пространство.

Внимание:Максимальная длина VARCHAR ограничена максимальным размером строки (65,535 байт, используемых всеми столбцами) и ограничением используемого набора символов.

Типы данных BINARY и VARBINARY

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

Типы данных TEXT и BLOB

Типы данных TEXT и BLOB предназначены для хранения большого объема данных. Тип данных TEXT используется для хранения длинных строк, таких как описания, комментарии в блогах и т.д.

BLOB - это двоичный большой объект, который может容纳 переменное количество данных. Эта функция особенно полезна, когда необходимо хранить двоичные файлы媒体 в базе данных (например, изображения или аудиофайлы).

Четыре типа BLOB: TINYBLOB, BLOB, MEDIUMBLOB и LONGBLOB. Разница между ними заключается только в максимальной длине значения. Таким же образом, четыре типа текста: TINYTEXT, TEXT, MEDIUMTEXT и LONGTEXT. Эти типы соответствуют типам BLOB, имеют одинаковые максимальные длины и требования к хранению.

В таблице ниже перечислены пары MySQL строковых данных типов. Максимальная длина указана в байтах, независимо от того, является ли тип двоичным или неявным.

Типы данных явных строкТипы данных неявных строкМаксимальная длина
BINARYCHAR255
VARBINARYVARCHAR65,535
TINYBLOBTINYTEXT255
BLOBTEXT65,535
MEDIUMBLOBMEDIUMTEXT16,777,215
LONGBLOBLONGTEXT4,294,967,295

Внимание:Для типов данных неявных строковых данных длина колонки обычно называется количеством символов, а не количеством байтов. Это означает, что максимальное количество символов в строке, содержащей многосимвольные символы, будет меньше.

Тип данных энум (ENUM)

Тип данных ENUM позволяет определить список возможных значений, которые могут быть хранятся в колонке. Например, колонка,指定的 ENUM('male', 'female') NOT Колонка с NULL может иметь следующие значения: '' (пустая строка), 'male' или 'female'. Вы можете определить до 65,535 различных значений в списке ENUM. Если вы вставите недопустимое значение в колонку ENUM (т.е. строку, которая не существует в списке разрешенных значений), будет вставлен пустой строкой.

Тип данных SET

Тип данных SET позволяет указать список значений, которые необходимо вставить в колонку, например, энум. Однако, в отличие от типа данных ENUM, который позволяет выбрать только одно значение, тип данных SET позволяет выбирать несколько значений из указанного списка.

Например, колонка,指定的 SET('one', 'two') NOT NULL, может хранить следующие значения: 'one', 'two' или 'one,two'. Множественные значения, разделенные запятыми (,). Для типа данных SET можно指定 до 64 различных значений.

Типы данных числовых значений

Типы данных числовых значений обычно используются для хранения данных, таких как цены, зарплаты и т.д.

Типы INTEGER, INT, SMALLINT, TINYINT, MEDIUMINT, BIGINT

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

Тип данныхИнтервал (символьный)Интервал (незнаковым)
TINYINT-128 до 127От 255
SMALLINT-32768 до 32767От 65535
MEDIUMINT-8388608 до 8388607От 16777215
INT-2147483648 до 2147483647От 4294967295
BIGINT-9223372036854775808 до 9223372036854775807От 18446744073709551615

Типы данных числовых значений имеют дополнительные атрибуты SIGNED (символ) и UNSIGNED (без знака). Типы данных числовых значений по умолчанию являются знаковыми, их диапазон extends от отрицательных до положительных значений. Добавление атрибута UNSIGNED к числовому столбцу не позволяет использовать отрицательные значения и перемещает диапазон, чтобы минимальное значение начиналось с 0, а не с отрицательного числа.

Типы DECIMAL, NUMERIC

Типы данных DECIMAL и NUMERIC предназначены для хранения точных чисел. Эти типы данных также называются «фиксированной позиции» или «точные значения», обычно используются при необходимости поддерживать точность, например при хранении данных货币ного типа, таких как цены продуктов. В MySQL тип NUMERIC реализован как DECIMAL.

При声明 столбца DECIMAL или NUMERIC можно указать точность и количество десятичных знаков, например DECIMAL (P, S) или NUMERIC (P, S), где P - точность, S - количество десятичных знаков. Точность указывает на максимальное количество знаков, которое можно хранить в столбце (включая знаки после запятой), а количество десятичных знаков указывает на количество знаков, которое можно хранить после запятой. Например, столбец DECIMAL (6, 2) может хранить любую сумму с шестью цифрами и двумя десятичными знаками, то есть значения от -9999.99 до 9999.99.

Типы FLOAT, DOUBLE

Типы FLOAT и DOUBLE представляют приблизительные значения данных. Поэтому эти типы данных также называются «вещественные» или «приблизительные» типы.

Язык синтаксиса поддерживаемый MySQL: FLOAT (M, D) или DOUBLE PRECISION (M, D). В данном случае, (M, D) означает, что можно хранить до M знаков значения, из которых D знаков могут быть после точки. Например, столбец, отображаемый как FLOAT (7,3), отображается как -9999.999.   MySQL производит округление значений при хранении, поэтому, если вставить 9999.0009 в столбец FLOAT (7,3), то приближенный результат будет 9999.001.

Внимание:Сравнение плавающих значений может привести к проблемам, так как они являются приблизительными, а не точными значениями. Поэтому для хранения значений, которые можно использовать для сравнения, таких как цена, заработная плата и т.д., следует использовать тип данных DECIMAL.

Типы данных Дата (DATE) и Время (TIME)

Типы данных Дата и Время (DATE и TIME) обычно используются для хранения данных, таких как дата рождения, дата найма, дата создания или обновления записи в таблице и т.д.

Тип данных DATE

Тип данных DATE используется для хранения дат. MySQL DATE хранит и извлекает значения в формате 'YYYY-MM-DD', где YYYY, MM и DD - год, месяц и день времени. Поддерживаемый диапазон составляет «1000-01-01» до «9999-12-31».

Тип данных Время (TIME)

Тип данных TIME может использоваться для хранения дней времени или интервала времени. MySQL TIME хранит и извлекает значения в формате 'HH:MM:SS', где HH, MM и SS - часовая, минутная и секундная части времени (или формат 'HHH:MM:SS' для часовых значений). Поддерживаемый диапазон значений TIME составляет '-838:59:59' до '838:59:59'.

Часовая часть может быть очень большой,因为在 MySQL тип TIME может использоваться не только для хранения времени дня (не должно превышать 24 часа), но и для времени, прошедшего или интервала между двумя событиями (может быть значительно больше 24 часов, даже отрицательным).

Внимание:По умолчанию, значения, выходящие за пределы диапазона времени, но оставшиеся действительными, будут обрезаны до ближайшего края диапазона. Например, '860:00:00' будет преобразовано в '838:59:59'. Ненадлежащие значения времени будут преобразованы в '00:00:00'.

Типы данных DATETIME и TIMESTAMP

Типы данных DATETIME и TIMESTAMP используются для хранения объединенных значений даты и времени в формате 'YYYY-MM-DD HH:MM:SS'. Эти типы данных обычно используются для хранения даты и времени при распределении заказов, при создании или изменении строки в таблице и т.д.

Эти два типа данных похожи во многом, но есть и некоторые различия. Тип DATETIME поддерживает диапазон '1000-01-01'. 00:00:00' до '9999-12-31 23:59:59'. Однако, диапазон временных меток составляет '1970-01-01 00:00:01'. От UTC до '2038-01-19 03:14:07' UTC.

TIMESTAMP и DATETIME также имеют особые автоматические свойства инициализации и обновления, но эти свойства не применяются к DATETIMEM до MySQL 5.6.5.

Внимание: MySQL преобразует значения TIMESTAMP из текущей часовой зоны в UTC для хранения, а затем из UTC обратно в текущую часовую зону для извлечения.

Тип данных Год (YEAR)

Тип данных YEAR используется для хранения значений года в формате YYYY.

Ее можно声明 как YEAR или YEAR(4). Диапазон поддерживаемых значений YEAR составляет от 1901 до 2155. Некорректные значения YEAR будут преобразованы в 0000.

Внимание:Старые версии MySQL все еще позволяют использовать для хранения значений года с двумя цифрами YEAR(2),но теперь это弃用,и поддержка его была удалена в MySQL 5.7.5.