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.
Last updated
Was this helpful?
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.
Last updated
Was this helpful?
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.
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, .
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.
BINARY
e VARBINARY
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.
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.
ENUM
e SET
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.
MYSQL. 11.3.2 The CHAR and VARCHAR Types. Disponível em:
11.3.4 The BLOB and TEXT Types
BINARY
VARBINARY
TINYBLOB
| TINYTEXT
255
BLOB
| TEXT
65.535
MEDIUMBLOB
| MEDIUMTEXT
16.777.215
LONGBLOB
| LONGTEXT
4.294.967.295
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.
latin1