Guia de Tipos de Dados no MySQL
Entender os tipos de dados no MySQL é fundamental para garantir a performance e a integridade do seu banco de dados. A escolha correta economiza espaço em disco e acelera as consultas.
1. Números Inteiros (Integers)
Utilizados para valores numéricos exatos, sem casas decimais.
- TINYINT: 1 byte (Range: -128 a 127).
- INT: 4 bytes (Até ~2,1 bilhões). Ideal para IDs principais.
- BIGINT: 8 bytes. Usado para volumes massivos de dados (ex: redes sociais).
2. Ponto Flutuante e Decimais
Para valores com frações ou números reais.
| Tipo | Uso Recomendado |
|---|---|
| FLOAT/DOUBLE | Cálculos científicos (Precisão aproximada). |
| DECIMAL | Valores financeiros/dinheiro (Precisão exata). |
3. Cadeias de Caracteres (Strings)
Para textos de qualquer tamanho.
Dica: Use VARCHAR para economizar espaço, pois ele armazena apenas o conteúdo real mais um pequeno prefixo de tamanho.
- CHAR: Tamanho fixo (mais rápido para códigos pequenos como siglas de países).
- VARCHAR: Tamanho variável (padrão para nomes e e-mails).
- TEXT: Para descrições longas ou artigos de blog.
4. Data e Hora (Date/Time)
Gerenciar tempo corretamente evita erros de fuso horário e cálculos manuais complexos.
- DATE: Formato
AAAA-MM-DD. - DATETIME: Data e hora completa. Range de 1000 a 9999.
- TIMESTAMP: Registra o momento exato (UTC). Atenção: Limite até o ano 2038.
⚠️ O Mistério do TIMESTAMP
O TIMESTAMP é o queridinho para logs porque ele entende fusos horários (UTC). Porém, ele tem um "prazo de validade".
Como ele utiliza 32 bits para contar os segundos desde 1970, ele atingirá seu limite máximo em 19 de janeiro de 2038. Para eventos que ocorrem após essa data (como parcelas de um financiamento de 30 anos), prefira sempre o DATETIME, que suporta datas até o ano 9999.
| Tipo | Exemplo Real | Formato de Saída |
|---|---|---|
| DATE | Data de Nascimento | AAAA-MM-DD |
| DATETIME | Reserva de Hotel | AAAA-MM-DD HH:MM:SS |
| TIMESTAMP | Log de Erro no Sistema | AAAA-MM-DD HH:MM:SS (UTC) |
Por que o Range e o Formato importam?
Definir o intervalo (range) correto evita o desperdício de memória RAM e disco. Um banco de dados bem estruturado permite que os Índices funcionem de forma otimizada, garantindo que seu site carregue rápido mesmo com milhões de linhas.
Tipagem MySQL
Os Dados estão divididos por categorias (Inteiros, Ponto Flutuante, String e Data/Hora).
1. Tipos Numéricos (Inteiros)
| Tipo | Bytes | Valor Mínimo (Signed) | Valor Máximo (Signed) | Máximo (Unsigned) |
|---|---|---|---|---|
| TINYINT | 1 | -128 | 127 | 255 |
| SMALLINT | 2 | -32.768 | 32.767 | 65.535 |
| INT | 4 | -2.147.483.648 | 2.147.483.647 | 4.294.967.295 |
| BIGINT | 8 | -2^63 | 2^63-1 | 2^64-1 |
2. Tipos de Texto (Strings)
| Tipo | Limite / Tamanho | Melhor Uso |
|---|---|---|
| CHAR(n) | Até 255 caracteres | Tamanho fixo (Ex: Siglas, Sexo, CEP) |
| VARCHAR(n) | Até 65.535 caracteres | Tamanho variável (Nomes, e-mails, títulos) |
| TEXT | 64 KB | Corpo de artigos, comentários longos |
| LONGTEXT | 4 GB | Logs extensos ou livros completos |
3. Tipos de Data e Hora
| Tipo | Formato | Intervalo (Range) |
|---|---|---|
| DATE | YYYY-MM-DD |
1000-01-01 a 9999-12-31 |
| DATETIME | YYYY-MM-DD HH:MM:SS |
1000-01-01 a 9999-12-31 |
| TIMESTAMP | YYYY-MM-DD HH:MM:SS |
1970-01-01 a 2038-01-19 (UTC) |
Pesquisa de Integridade: Tipagem MySQL
Valide seus conhecimentos sobre a estrutura de dados para o blog.

