♛ FORTRESS-DESIGN

Типы данных столбцов MySQL

MySQL поддерживает несколько типов столбцов, которые можно разделить на три категории:

  1. Числовые типы данных.
  2. Типы данных для хранения даты и времени.
  3. Символьные (строковые) типы данных.

Ниже перечислены только некоторые типы столбцов. На сайте phpclub.ru есть полный список типов данных, поддерживаемых MySQL.
Квадратные скобки ([ ]) указывают для необязательных признаков.

Примечание: если для столбца указать параметр ZEROFILL, то MySQL будет автоматически добавлять в этот столбец атрибут UNSIGNED.В скобках указан максимально допустимый размер вывода M составляет 255 символов.

Числовые типы данных

TINYINT[(M)] [UNSIGNED] [ZEROFILL]
Очень малое целое число. Диапазон со знаком от -128 до 127. Диапазон без знака от до 255.

BIT, BOOL
Являются синонимами для TINYINT(1).

SMALLINT[(M)] [UNSIGNED] [ZEROFILL]
Малое целое число. Диапазон со знаком от -32768 до 32767. Диапазон без знака от до 65535.

MEDIUMINT[(M)] [UNSIGNED] [ZEROFILL]
Целое число среднего размера. Диапазон со знаком от -8388608 до 8388607. Диапазон без знака от до 16777215.

INT[(M)] [UNSIGNED] [ZEROFILL]
Целое число нормального размера. Диапазон со знаком от -2147483648 до 2147483647. Диапазон без знака от до 4294967295.

INTEGER[(M)] [UNSIGNED] [ZEROFILL]
Синоним для INT.

BIGINT[(M)] [UNSIGNED] [ZEROFILL]
Большое целое число. Диапазон со знаком от -9223372036854775808 до 9223372036854775807. Диапазон без знака от до 18446744073709551615.

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

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

Символьные (строковые) типы данных

[NATIONAL] CHAR(M) [BINARY]
Строка фиксированной длины, при хранении всегда дополняется пробелами в конце строки до заданного размера. Диапазон аргумента M составляет от до 255 символов (от 1 до 255 в версиях, предшествующих MySQL 3.23). Концевые пробелы удаляются при выводе значения. Если не задан атрибут чувствительности к регистру BINARY, то величины CHAR сортируются и сравниваются как независимые от регистра в соответствии с установленным по умолчанию алфавитом.

Атрибут NATIONAL CHAR (или его эквивалентная краткая форма NCHAR) представляет собой принятый в ANSI SQL способ указания, что в столбце CHAR должен использоваться установленный по умолчанию набор символов (CHARACTER). В MySQL это принято по умолчанию. CHAR является сокращением от CHARACTER. MySQL позволяет создавать столбец типа CHAR(0).

В основном это полезно, если необходимо обеспечить совместимость с некоторыми старыми приложениями, которые зависят от наличия столбца, но реально эту величину не используют. Кроме того, такая возможность может очень пригодиться в случае, если необходим столбец, который может содержать только 2 значения, а именно CHAR(0) (т. е. столбец, который не определен как NOT NULL, занимает только один бит и принимает только 2 значения: NULL или "").

CHAR
Это синоним для CHAR(1).

VARCHAR(M) [BINARY]
Строка переменной длины.

Примечание: концевые пробелы удаляются при сохранении значения (в этом заключается отличие от спецификации ANSI SQL). Диапазон аргумента M составляет от 0 до 255 символов (от 1 до 255 в версиях, предшествующих MySQL Version 4.0.2). Если не задан атрибут чувствительности к регистру BINARY, то величины VARCHAR сортируются и сравниваются как независимые от регистра. Термин VARCHAR является сокращением от CHARACTER VARYING.

TINYBLOB, TINYTEXT
Столбец типа BLOB или TEXT с максимальной длиной 255 (2^8 - 1) символов.

BLOB, TEXT
Столбец типа BLOB или TEXT с максимальной длиной 65535 (2^16 - 1) символов.

MEDIUMBLOB, MEDIUMTEXT
Столбец типа BLOB или TEXT с максимальной длиной 16777215 (2^24 - 1) символов.

LONGBLOB, LONGTEXT
Столбец типа BLOB или TEXT с максимальной длиной 4294967295 (2^32 — 1) символов. Следует учитывать, что в настоящее время протокол передачи данных сервер/клиент и таблицы MyISAM имеют ограничение 16 Мб на передаваемый пакет/строку таблицы, поэтому пока нельзя использовать этот тип данных в его полном диапазоне.

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

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

В столбце типа CHAR длина поля постоянна и задается при создании таблицы.
Эта длина может принимать любое значение между 1 и 255 (что же касается
версии MySQL 3.23, то в ней длина столбца CHAR может быть от до 255).
Величины типа CHAR при хранении дополняются справа пробелами до заданной
длины. Эти концевые пробелы удаляются при извлечении хранимых величин.

Величины в столбцах VARCHAR представляют собой строки переменной длины.
Так же как и для столбцов CHAR, можно задать столбец VARCHAR любой длины
между 1 и 255. Однако, в противоположность CHAR, при хранении величин типа
VARCHAR используется только то количество символов, которое необходимо, плюс один байт для записи длины. Хранимые величины пробелами не дополняются, наоборот, концевые пробелы при хранении удаляются (описанный процесс удаления пробелов отличается от предусмотренного спецификацией ANSI SQL).

Если задаваемая в столбце CHAR или VARCHAR величина превосходит максимально допустимую длину столбца, то эта величина соответствующим образом усекается.

Различие между этими двумя типами столбцов в представлении результата хранения величин с разной длиной строки в столбцах CHAR(4) и
VARCHAR(4) проиллюстрировано следующей таблицей:

Величина CHAR(4) Требуемая память VARCHAR(4) Требуемая память
'' '    ' 4 байта '' 1 байт
'ab' 'ab  ' 4 байта 'ab' 3 байта
'abcd' 'abcd' 4 байта 'abcd' 5 байтов
'abcdefgh' 'abcd' 4 байта 'abcd' 5 байтов

Извлеченные из столбцов CHAR(4) и VARCHAR(4) величины в каждом случае
будут одними и теми же, поскольку при извлечении концевые пробелы из
столбца CHAR удаляются.

Если при создании таблицы не был задан атрибут BINARY для столбцов, то
величины в столбцах типа CHAR и VARCHAR сортируются и сравниваются без
учета регистра. При задании атрибута BINARY величины в столбце сортируются
и сравниваются с учетом регистра в соответствии с порядком таблицы ASCII
на том компьютере, где работает сервер MySQL. Атрибут BINARY не влияет на
процессы хранения или извлечения данных из столбца.

Атрибут BINARY является «прилипчивым». Это значит, что, если в
каком-либо выражении использовать столбец, помеченный как BINARY, то
сравнение всего выражения будет выполняться как сравнение величины типа
BINARY.

MySQL может без предупреждения изменить тип столбца CHAR или VARCHAR во
время создания таблицы.


Перейти к верхней панели