Тип данных BLOB
представляет собой двоичный
объект большого размера, который
может содержать переменное
количество данных. Существуют 4
модификации этого типа -
TINYBLOB, BLOB,
MEDIUMBLOB и LONGBLOB,
отличающиеся только максимальной
длиной хранимых величин. See
Раздел 6.2.6, «Требования к памяти для различных типов столбцов».
Тип данных TEXT также
имеет 4 модификации -
TINYTEXT, TEXT,
MEDIUMTEXT и LONGTEXT,
соответствующие упомянутым
четырем типам BLOB и
имеющие те же максимальную длину
и требования к объему памяти.
Единственное различие между
типами BLOB и
TEXT состоит в том, что
сортировка и сравнение данных
выполняются с учетом регистра для
величин BLOB и без учета
регистра для величин
TEXT. Другими словами,
TEXT - это независимый от
регистра BLOB.
Если размер задаваемого в столбце
BLOB или TEXT
значения превосходит максимально
допустимую длину столбца, то это
значение соответствующим образом
усекается.
В большинстве случаев столбец
TEXT может
рассматриваться как столбец
VARCHAR неограниченного
размера. И, аналогично,
BLOB - как столбец типа
VARCHAR BINARY. Различия при
этом следующие:
Столбцы типов BLOB и
TEXT могут
индексироваться в версии MySQL
3.23.2 и более новых. Более старые
версии MySQL не поддерживают
индексацию этих столбцов.
В столбцах типов BLOB и
TEXT не производится
удаление концевых символов, как
это делается для столбцов типа
VARCHAR.
Для столбцов BLOB и
TEXT не может быть
задан атрибут DEFAULT -
значения величин по умолчанию.
В MyODBC величины типа BLOB
определяются как
LONGVARBINARY и величины типа
TEXT - как LONGVARCHAR.
Так как величины типов
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; это значение можно
изменить, используя параметр
-O сервера
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 определяется его
типом, но наибольшее значение,
которое фактически может быть
передано между клиентом и
сервером, ограничено величиной
доступной памяти и размером
буферов связи. Можно изменить
размер буфера блока передачи,
но сделать это необходимо как
на стороне сервера, так и на
стороне клиента. See
Раздел 5.5.2, «Настройка параметров сервера».
Следует учитывать, что внутренним
представлением любой величины
типа BLOB или
TEXT является отдельно
размещенный объект - в
противоположность всем остальным
типам столбцов, для которых
память выделяется единовременно
для столбца при открытии таблицы.
This is a translation of the MySQL Reference Manual that can be found at dev.mysql.com. The original Reference Manual is in English, and this translation is not necessarily as up to date as the English version.
© 1995-2005 MySQL AB. All rights reserved.
