Quais são as diferenças entre os tipos de dados BLOB e TEXT no MySQL?

117

O que é blobe o que é text? Quais são as diferenças?

Quando preciso usar blobe quando preciso textcomo tipo de dados?

Porque para blobe text, existem mediumblob== mediumtext, smallblob== small text. Eles ainda têm o mesmo significado?

E olhe para isso MEDIUMBLOB, MEDIUMTEXT L+ 3 bytes, onde L < 224.

O que é L?

nencor
fonte
Acho que esta postagem responde à sua pergunta stackoverflow.com/questions/7071662/mysql-text-vs-blob-vs-clob
Earlonrails

Respostas:

103

TEXT e CHAR serão convertidos de / para o conjunto de caracteres que eles associaram ao tempo. BLOB e BINARY simplesmente armazenam bytes.

BLOB é usado para armazenar dados binários enquanto Text é usado para armazenar strings grandes.

Os valores BLOB são tratados como cadeias binárias (cadeias de bytes). Eles não têm conjunto de caracteres e a classificação e a comparação são baseadas nos valores numéricos dos bytes nos valores da coluna.

Os valores TEXT são tratados como strings não binárias (strings de caracteres). Eles têm um conjunto de caracteres e os valores são classificados e comparados com base no agrupamento do conjunto de caracteres.

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

Darcey
fonte
3
então, usamos texto para armazenar textos longos, como "wordpress post"? e usamos blob para armazenar endereços de URL muito longos? então, por que não usamos varchar para armazenar um texto muito longo em vez de usar blob ou texto? porque no cálculo da memória, o varchar é realmente simples, por exemplo, criamos o site da tabela (website_name varchar (30)) e, em seguida, preenchemos o site_name "stackoverflow" para que a memória necessária seja de 13 bytes
nencor
5
TEXT será substituído por Varchar (MAX) mas, por enquanto, dependendo da sua versão do mysql, use TEXT para postagens de texto grandes, como postagens de corpo de blog, etc. BLOB não deve ser usado para armazenar endereços de URL muito longos ou grandes quantidades de texto . Normalmente é usado para armazenar imagens ou outros objetos baseados em binários. Pessoalmente, nunca uso BLOB ou TEXT e armazeno grandes quantidades de dados em arquivos xml relativos a pastas baseadas em IDs de usuário.
Darcey
eu não entendo objeto baseado em binário. Quer dizer, podemos armazenar fotos no banco de dados usando tipo de dados Blob ?? apenas como pasta? tudo que eu sei sobre binário é apenas 1 ou 0.
nencor
1
@nencor Sim, você pode armazenar imagens em bancos de dados. Você também pode armazenar arquivos. Mas você não pode armazenar uma pasta em um banco de dados, porque as pastas são, na verdade, recursos do sistema de arquivos. (Você poderia eventualmente armazenar um sistema de arquivos completo, por exemplo, como um arquivo iso em um banco de dados, no entanto)
Martin Thoma,
@ martin-thoma Temos um aplicativo em que o lado do servidor possui um banco de dados MongoDB. O componente móvel do aplicativo usa SQLLite. Deve haver uma maneira de conectar os dados entre o banco de dados MongoDB e o banco de dados SQLLite. O MongoDB usa ObjectIds para identificar dados de maneira exclusiva. Como o SQLLite (mundo RDBMS) não tem nenhuma maneira direta de representar ObjectIds do MongoDB, gostaria de saber se eu poderia armazenar ObjectIds como tipos BLOB. Isso soa como uma solução razoável? Isso tornaria o desempenho lento? Haveria alguma outra desvantagem?
CS Lewis
10

TEXT e CHAR ou nchar que normalmente serão convertidos em texto simples para que você só possa armazenar texto como strings.

BLOB e BINARY, o que significa que você pode armazenar dados binários, como imagens, simplesmente armazenar bytes.

COLD TOLD
fonte
o que você quer dizer com armazenar dados binários, como imagem? você quis dizer url da imagem?
nencor
10

Tipos de dados de blob armazenam objetos binários como imagens, enquanto tipos de dados de texto armazenam objetos de texto como artigos de páginas da web

Kenny
fonte
7

Um BLOB é uma string binária para armazenar uma quantidade variável de dados. Na maior parte dos casos, os BLOBs são usados ​​para manter o binário da imagem real em vez do caminho e das informações do arquivo. O texto é para grandes quantidades de caracteres de string. Normalmente, um blog ou artigo de notícias constituiria um campo TEXT

L, neste caso, é usado para indicar o requisito de armazenamento. (Comprimento | Tamanho + 3), desde que seja inferior a 224.

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

James Williams
fonte
3

De acordo com o livro Mysql de alto desempenho:

A única diferença entre as famílias BLOB e TEXT é que os tipos BLOB armazenam dados binários sem agrupamento ou conjunto de caracteres, mas os tipos TEXT possuem um conjunto de caracteres e agrupamento.

Alireza Rahmani Khalili
fonte
1

O BLOB armazena dados binários com mais de 2 GB. O tamanho máximo para BLOB é 4 GB. Dados binários significam dados não estruturados, ou seja, imagens, arquivos de áudio, arquivos vedio, assinatura digital

O texto é usado para armazenar strings grandes.

Abhishek Saha
fonte