🔠Tipos textuais

Além de números, não raramente pode surgir a necessidade de armazenar dados no formato de strings no banco de dados. Para isto, no MySQL, usamos alguns dos tipos de dados apresentados nesta página.

Os principais tipos de dados textuais – isto é, no formato de strings, cadeiras de caracteres –, são CHAR, VARCHAR, BINARY, VARBINARY, BLOB, TEXT, ENUM e SET.

Quando definimos uma coluna dos tipos CHAR e VARCHAR, precisamos passar um argumento que corresponde ao tamanho máximo de caracteres que tal coluna poderá armazenar. Um exemplo disso é: CHAR(20) suporta até 20 caracteres, incluindo letras, números e caracteres especiais. No caso do tipo CHAR, é possível passar um número de 0 a 255, enquanto no tipo VARCHAR este número vai até 65535.

Tipo CHAR ou VARCHAR: quando usar?

Certamente, em algum momento você vai se questionar quando usar o tipo CHAR ou VARCHAR. Neste caso, qual seria então a diferença entre os dois tipos? Simples: enquanto o primeiro tem tamanho fixo, o segundo tem tamanho variável, .

CHAR

String de tamanho fixo, pode conter letras, números e caracteres especiais.

Tamanhos de 0 to 255. O padrão é 1.

VARCHAR

String de tamanho variável, pode conter letras, números e caracteres especiais.

Tamanhos de 0 a 65535. O padrão é 1.

Isso quer dizer que uma coluna com tipo CHAR, mesmo que a string tenha um tamanho menor que o tamanho máximo especificado na criação da coluna, sempre ocupará o tamanho máximo definido. Já numa coluna com o tipo VARCHAR, o tamanho consumido será adaptado pelo banco a partir do valor atribuído à coluna.

Drawing
Exemplo considerando uma coluna com conjunto de caracteres de byte único, como latin1

Segundo a documentação, as colunas do tipo VARCHAR incluem um prefixo de 1 byte – para valores ≤ 255 bytes – ou 2 bytes – para valores > 255 bytes –, que define o número de bytes do valor da coluna, além dos dados.

Tipos BINARY e VARBINARY

BINARY

VARBINARY

Tipos BLOB e TEXT

No MySQL, o tipo BLOB (Binary Large Object) é dividido em quatro tipos, cuja diferença está no tamanho máximo dos valores que uma coluna definida com os respectivos tipos pode armazenar: TINYBLOB, BLOB, MEDIUMBLOB e LONGBLOB.

Em termos de tamanho e requisitos de armazenamento, segundo a documentação, o tipo TEXT apresenta subdivisões que são correspondentes às divisões do tipo BLOB: TINYTEXT, TEXT, MEDIUMTEXT e LONGTEXT.

Each BLOB or TEXT value is represented internally by a separately allocated object. This is in contrast to all other data types, for which storage is allocated once per column when the table is opened.

Tipos

TINYBLOB | TINYTEXT

Tamanho (em bytes)

255

Tipos

BLOB | TEXT

Tamanho (em bytes)

65.535

Tipos

MEDIUMBLOB | MEDIUMTEXT

Tamanho (em bytes)

16.777.215

Tipos

LONGBLOB | LONGTEXT

Tamanho (em bytes)

4.294.967.295

Mas se os tipos BLOB e TEXT (e as variações citadas acima) têm o mesmo tamanho e são tipos de strings, o que então eles têm de diferentes?

As colunas com tipos BLOB "são tratadas como strings binárias ()", de modo que comparações e ordenação são feitos com base nos valores numéricos dos bytes nos valores das colunas.

Colunas com tipos TEXT, por sua vez, "são tratadas como strings não binárias, cuja ordenação e comparações" são realizados segundo o agrupamento do conjunto de caracteres.

Tipos ENUM e SET

Referências

Last updated

Was this helpful?