🎲
Banco de Dados com MySQL
  • 📜README
  • 🎯TABLE OF CONTENTS
  • 🚪INTRO
    • 🎲Banco de Dados: Conceitos e Definições
    • 🗣️Análise de Requisitos
  • 🗃️MODELAGEM DE DADOS
    • ✈️Modelo Entidade-Relacionamento
      • 👤Entidades
      • 🫂Relacionamentos
      • 💪Atributos
        • 🧠Tipos de atributos
    • 🏫Escola: modelo conceitual
      • ♻️Conversão do MER para MR
  • 🚧DDL
    • 🧮Tipos de Dados no MySQL
      • 🔢Tipos numéricos
      • 🔠Tipos textuais
      • 📆Tipos de data e hora
    • ♻️Conversão do modelo ER para o modelo relacional
    • 🧱Criar a estrutura do banco de dados
    • 🪚Alterar tabelas
  • 📑DML
    • 📝INSERT
    • 🔎SELECT
      • 📈Funções de agregação
      • 😁Junções de tabelas
    • ✏️UPDATE
    • ❌DELETE
  • 👩‍💻STORED OBJECTS
    • 🗃️STORED OBJECTS
      • 👁️Views
      • 📑Procedures
      • 📋Funcions
      • 🔫Triggers
Powered by GitBook
On this page
  • Tipo CHAR ou VARCHAR: quando usar?
  • Tipos BINARY e VARBINARY
  • Tipos BLOB e TEXT
  • Tipos ENUM e SET
  • Referências

Was this helpful?

Edit on GitHub
  1. DDL
  2. Tipos de Dados no MySQL

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.

PreviousTipos numéricosNextTipos de data e hora

Last updated 2 years ago

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.

Curiosidade

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, .

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.

Tipos BINARY e 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.

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

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
Tamanho (em bytes)
Tipos
Tamanho (em bytes)
Tipos
Tamanho (em bytes)
Tipos
Tamanho (em bytes)

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

Segundo a documentação,
https://pt.stackoverflow.com/questions/214295/qual-a-diferen%C3%A7a-entre-varchar-e-nvarchar
https://dev.mysql.com/doc/refman/8.0/en/char.html
https://dev.mysql.com/doc/refman/8.0/en/blob.html
https://dev.mysql.com/doc/refman/8.0/en/string-types.html
https://dev.mysql.com/doc/refman/8.0/en/storage-requirements.html#data-types-storage-reqs-strings

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.

Qual a utilidade do tipo de coluna VARCHAR(0)?
Exemplo considerando uma coluna com conjunto de caracteres de byte único, como latin1
Drawing