Навигация

Поиск по Сайту

Партнеры

Самоучитель. Книги.

Статистика

    Каталог@Mail.ru - каталог ресурсов интернет

Строковые типы BLOB и TEXT в MySQL.

Главная Страница » Книги по PHP » MySQL уроки для начинающих с нуля » Строковые типы BLOB и TEXT

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

Есть четыре типа BLOB'ов: TINYBLOB, BLOB, MEDIUMBLOB и LONGBLOB, отличающиеся только по максимальной длине значений, которые они могут хранить.

Четыре типа TEXT: TINYTEXT, TEXT, MEDIUMTEXT и LONGTEXT соответствуют четырем типам BLOB и имеют те же самые максимальные длины и требования к памяти (именно поэтому они и рассматриваются в одном подразделе). Единственное различие между типами BLOB и TEXT в том, что сортировка выполняется с учетом регистра для значений типа BLOB и без учета регистра для TEXT.

Если вы присваиваете столбцу BLOB или TEXT значение, которое превышает максимальную длину для типа столбца, значение будет усечено, чтобы поместиться в столбец.

В большинстве случаев вы можете расценивать столбец TEXT как VARCHAR, который может быть настолько велик, насколько хотите. Точно так же вы можете расценивать столбец BLOB как VARCHAR BINARY. Различия в том, что:

  • пробелы для BLOB и TEXT не удаляются, когда значения сохранены, в противоположность VARCHAR;
  • столбцы типов BLOB и TEXT не могут иметь значений по умолчанию (параметр DEFAULT).

Поскольку значения BLOB и TEXT могут быть чрезвычайно длинными, вы можете столкнуться с ограничениями при их использовании:

  • если вы хотите использовать инструкцию GROUP BY или ORDER BY на столбце типа BLOB или TEXT, вы должны преобразовать значение столбца в объект фиксированной длины. Стандартный способ сделать это: функция SUBSTRING, например:
mysql> select comment from tbl_name, substring(comment, 20) as substr
       ORDER BY substr;

Если вы не сделаете этого, только первые max_sort_length байт столбца используются при сортировке. Значение по умолчанию для max_sort_length равно 1024, это значение может быть изменено с использованием опции -О при запуске сервера mysqld. Вы можете группировать данные на выражении, включающем значения BLOB или TEXT, определяя позицию столбца или используя псевдоним:

mysql> select id,substring(blob_col,1,100) from tbl_name GROUP BY 2;
mysql> select id,substring(blob_col,1,100) as b from tbl_name GROUP BY b;
  • максимальный размер объекта BLOB или TEXT определен типом, но самое большое значение, которое вы можете фактически передать между клиентом и сервером, зависит от количества доступной памяти и размера буферов связи. Вы можете изменять размер буфера сообщения, но должны сделать это на клиенте и на сервере одновременно.