В чем разница между типами данных BLOB и TEXT в MySQL?


117

Что есть blobи что есть text? Какие отличия?

Когда мне нужно использовать blobи когда мне нужно в textкачестве типа данных?

Потому что для blobи textесть mediumblob== mediumtext, smallblob== small text. У них вообще такое же значение?

И посмотрите на это MEDIUMBLOB, MEDIUMTEXT L+ 3 байта, где L < 224.

Что есть L?


Думаю, этот пост отвечает на ваш вопрос stackoverflow.com/questions/7071662/mysql-text-vs-blob-vs-clob
Earlonrails

Ответы:


103

ТЕКСТ и СИМВОЛ будут преобразовывать в / из набора символов, который они связали со временем. BLOB и BINARY просто хранят байты.

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

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

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

http://dev.mysql.com/doc/refman/5.0/en/blob.html


3
Итак, мы используем текст для хранения длинного текста, такого как «сообщение WordPress»? а мы используем blob для хранения очень длинных URL-адресов? так почему бы нам не использовать varchar для хранения очень длинного текста вместо использования blob или текста? потому что при вычислении памяти varchar действительно прост, например, создать таблицу веб-сайта (имя_сайта varchar (30)), а затем мы заполняем имя_сайта "stackoverflow" так, чтобы необходимая память составляла 13 байт
nencor

5
TEXT будет заменен на Varchar (MAX), но на данный момент в зависимости от вашей версии mysql используйте TEXT для больших текстовых сообщений, таких как сообщения в основной части блога и т. Д. BLOB не следует использовать для хранения очень длинных URL-адресов или больших объемов текста , Обычно он используется для хранения изображений или других двоичных объектов. Лично я никогда не использую BLOB или TEXT и храню большие объемы данных в файлах xml относительно папок на основе идентификаторов пользователей.
Darcey

Я не понимаю двоичный объект. Вы имеете в виду, что мы можем хранить фото в базе данных, используя тип данных Blob ?? просто как папка? все, что я знаю о двоичных
файлах,

1
@nencor Да, вы можете хранить изображения в базах данных. Вы также можете хранить архивы. Но вы не можете сохранить папку в базе данных, потому что папки на самом деле являются функциями файловой системы. (В конечном итоге вы можете сохранить полную файловую систему, например, как файл iso в базе данных)
Мартин Тома

@ martin-thoma У нас есть приложение, в котором на стороне сервера есть база данных MongoDB. Мобильный компонент приложения использует SQLLite. Должен быть способ связать данные между базой данных MongoDB и базой данных SQLLite. MongoDB использует ObjectIds для уникальной идентификации данных. Поскольку SQLLite (мир RDBMS) не имеет прямого способа представления ObjectIds MongoDB, мне было интересно, могу ли я хранить ObjectIds как типы BLOB. Это звучит как разумное решение? Это снизит производительность? Будут ли другие недостатки?
CS Lewis

10

TEXT и CHAR или nchar, которые обычно преобразуются в обычный текст, поэтому вы можете хранить только текст как строки.

BLOB и BINARY, которые означают, что вы можете хранить двоичные данные, такие как изображения, просто хранят байты.


что вы имеете в виду под хранить двоичные данные, такие как изображение? вы имели в виду url изображения?
nencor

10

Типы данных Blob хранят двоичные объекты, такие как изображения, в то время как текстовые типы данных хранят текстовые объекты, такие как статьи веб-страниц.


7

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

L в этом случае используется для указания требований к объему памяти. (Длина | Размер + 3), если оно меньше 224.

Ссылка: http://dev.mysql.com/doc/refman/5.0/en/blob.html


3

Согласно высокопроизводительной книге Mysql:

Единственное различие между семействами BLOB и TEXT состоит в том, что типы BLOB хранят двоичные данные без сопоставления или набора символов, но типы TEXT имеют набор символов и сопоставление.


1

BLOB хранит двоичные данные размером более 2 ГБ. Максимальный размер BLOB-объекта - 4 ГБ. Двоичные данные означают неструктурированные данные, например изображения аудиофайлы vedio файлы цифровая подпись

Текст используется для хранения большой строки.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.