BLOB
и TEXT
ENUM
SET
Buy this Reference Manual in softcover from Barnes & Noble!
BLOB
и TEXT
Тип данных BLOB
представляет собой двоичный объект большого размера, который может содержать переменное количество данных. Существуют 4 модификации этого типа - TINYBLOB
, BLOB
, MEDIUMBLOB
и LONGBLOB
, отличающиеся только максимальной длиной хранимых величин. See section 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 section 5.5.2 Настройка параметров сервера.Следует учитывать, что внутренним представлением любой величины типа BLOB
или TEXT
является отдельно размещенный объект - в противоположность всем остальным типам столбцов, для которых память выделяется единовременно для столбца при открытии таблицы.
Posted by alex alex on Thursday February 20 2003, @1:09am | [Delete] [Edit] |
Please how to show the content of the field (blob).
Add your own comment.