Spec-Zone .ru
спецификации, руководства, описания, API

11.4.3. BLOB иTEXT Типы

A BLOB большой двоичный объект, который может содержать переменный объем данных. Четыре BLOB типы TINYBLOB, BLOB, MEDIUMBLOB, и LONGBLOB. Они отличаются только по максимальной длине значений, которые они могут содержать. Четыре TEXT типы TINYTEXT, TEXT, MEDIUMTEXT, и LONGTEXT. Они соответствуют четырем BLOB у типов и есть те же самые максимальные длины и требования хранения. См. Раздел 11.6, "Требования Хранения Типа данных".

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

Если строгий режим SQL не включается, и Вы присваиваете значение a BLOB или TEXT столбец, который превышает максимальную длину столбца, значение, является усеченным, чтобы соответствовать, и предупреждение сгенерировано. Для усечения непробелов можно вызвать ошибку произойти (а не предупреждение) и подавить вставку значения при использовании строгого режима SQL. См. Раздел 5.1.7, "Режимы SQL Сервера".

Усечение избыточных конечных пробелов от значений, которые будут вставлены в TEXT столбцы всегда генерируют предупреждение, независимо от режима SQL.

Для TEXT и BLOB столбцы, нет никакого дополнения на вставке, и никакие байты не разделяются на избранном.

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

В большинстве отношений можно расценить a BLOB столбец как a VARBINARY столбец, который может быть столь же большим, как Вам нравится. Точно так же можно расценить a TEXT столбец как a VARCHAR столбец. BLOB и TEXT отличайтесь от VARBINARY и VARCHAR следующими способами:

Если Вы используете BINARY атрибут с a TEXT тип данных, столбец присваивается двоичное сопоставление набора символов столбца.

LONG и LONG VARCHAR отобразитесь на MEDIUMTEXT тип данных. Это - функция совместимости.

MySQL, Connector/ODBC, определяет BLOB значения как LONGVARBINARY и TEXT значения как LONGVARCHAR.

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

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

В некоторых случаях это может быть требуемым, чтобы сохранить двоичных данных, таких как медиа-файлы в BLOB или TEXT столбцы. Можно счесть строковые функции обработки MySQL полезными для работы с такими данными. См. Раздел 12.5, "Строковые функции". Для безопасности и других причин, обычно предпочтительно сделать так код программы использования вместо того, чтобы дать пользователям приложения FILE полномочие. Можно обсудить специфические особенности для различных языков и платформ в MySQL Forums (http://forums.mysql.com/).