Строковые данные (String Types) в MySQL.
В MySQL существует несколько типов символических данных (строковых). Понятие “строки”, которые могут храниться в таких столбцах MySQL, является общим в том смысле, что это могут быть не только строки символов (текстовые данные), но и какие-то двоичных данные, например, изображения или аудио файлы.
Текстовые строковые данные.
CHAR | для хранения данных фиксированной длины |
VARCHAR | для хранения данных переменной длины |
TEXT | для хранения данных переменной длины |
Типы char и varchar самые распространенные. Единственное отличие между ними, что первый тип с фиксированной длиной, второй – с переменной. При сохранении в поле char более короткого значения, оно дополняется пробелами справа. Эти пробелы отсекаются при выборке. Значения типа varchar занимают столько байт, сколько нужно для их хранения плюс один байт для сохранения длины строки.
В таблице ниже приведены примеры, как сохраняется значения в столбцах типа char и varchar.
Значение | CHAR(4) | Количество байт | VARCHAR(4) | Количество байт |
” | ‘ ‘ | 4 байта | ” | 1 байт |
‘AB’ | ‘AB ‘ | 4 байта | ‘AB’ | 3 байта |
‘ABCD’ | ‘ABCD’ | 4 байта | ‘ABCD’ | 5 байт |
‘ABCDEF’ | ‘ABCD’ | 4 байта | ‘ABCD’ | 5 байт |
Если длина значений, сохраняемых в столбце меняется незначительно, предпочтительнее использовать char, т.к. таблицы со строками фиксированной длины обрабатываются эффективнее, чем с переменной.
Особо стоит выделить типы ENUM и SET. Это такие строковые типы данных, значения которых выбираются из фиксированного списка значений. Главное отличие между ними заключается в том, что при выборе значения типа ENUM можно выбрать только одно единственное значение из указанного множества, а тип SET позволяет выбрать одновременно одно или нескольких значений. Другими словами тип ENUM содержит взаимоисключающие значения
Например:
color ENUM(“крастный”,”желтый”,”зеленый”)
Выберите сигнал светофора.
Или другой пример. Здесь уже можно выбрать более одной позиции:
fruit SET (“яблоко”,”груша”,”апельсин”)
Выберите любимые фрукты.
Типы SET и ENUM хотя и классифицируются как строковые, внутренние их элементы хранятся как числа, и их можно обрабатывать как цифровые. А раз их можно обрабатывать цифровыми методами, эти типы данных эффективнее других строковых типов.
Бинарные строковые данные.
Бинарные строковые данные используются для хранения произвольной последовательности байт (изображений, аудио, данных сжатых в архив и т.п.). Существуют 2 класса бинарных строковых данных: Binary, BLOB. Эти классы в свою очередь делятся на несколько типов, которые описаны в таблице ниже.
Класс | Тип | Описание |
Binary | BINARY | Фиксированной длины. Похожа на тип CHAR, только в отличие от него сохраняются двоичные данные. |
Binary | VARBINARY | Переменной длины. Похожа на тип VARCHAR, только в отличие от него сохраняются двоичные данные. |
BLOB | TINYBLOB | BLOB с максимальной длиной до 255 байт. |
BLOB | BLOB | BLOB с максимальной длиной до 65 535 байт. |
BLOB | MEDIUMBLOB | BLOB с максимальной длиной до 16 777 215 байт. |
BLOB | LONGBLOB | BLOB с максимальной длиной до 4 294 967 295 байт. |