Tipos de Dados SQL Explicados: INTEGER, VARCHAR, DATE e Mais
Lição 1.4 · Tempo de leitura: ~8 min · Tarefas para praticar ↓
Os tipos de dados definem que tipo de valor cada coluna pode armazenar numa base de dados relacional. Nesta lição, vai aprender os tipos SQL mais comuns, quando usar cada um e como escolhas corretas melhoram a qualidade dos dados, o armazenamento e o desempenho das consultas.
Na lição anterior, vimos tabelas, chaves, restrições e ACID. Agora vamos para uma decisão prática de modelação: escolher o tipo de dados certo para cada coluna.

Antes de entrar nos subtipos, veja os principais grupos de tipos de dados em SQL:
- Tipos numéricos:
TINYINT,INT,BIGINT,DECIMAL,FLOAT - Tipos de texto:
CHAR,VARCHAR,TEXT - Tipos de data e hora:
DATE,TIME,DATETIME,TIMESTAMP - Tipos especializados:
BOOLEAN,BLOB,JSON
Quais são os tipos numéricos em SQL?
Os tipos numéricos armazenam números, mas cada grupo resolve um problema diferente:
- inteiros para valores sem casas decimais,
- decimais exatos para finanças,
- ponto flutuante para cálculos aproximados.
Família INTEGER
Tipos inteiros armazenam apenas números sem parte decimal.
| Tipo | Tamanho típico | Intervalo assinado aproximado |
|---|---|---|
TINYINT | 1 byte | -128 a 127 |
SMALLINT | 2 bytes | -32.768 a 32.767 |
INTEGER / INT | 4 bytes | -2.147.483.648 a 2.147.483.647 |
BIGINT | 8 bytes | -9.223.372.036.854.775.808 a 9.223.372.036.854.775.807 |
Os limites exatos podem variar consoante o SGBD e o suporte a signed/unsigned.
DECIMAL / NUMERIC
DECIMAL guarda valores exatos com precisão fixa.
DECIMAL(p, s)significa:p= total de dígitos,s= dígitos após a vírgula.
- Exemplo:
DECIMAL(10, 2)permite valores até 99.999.999,99. - É o tipo recomendado para preços, impostos, saldos e faturação.
FLOAT / REAL / DOUBLE
Tipos de ponto flutuante armazenam valores aproximados.
- Úteis em cálculos científicos e medições.
- Não são ideais para dinheiro devido a possíveis diferenças de arredondamento.
DOUBLEcostuma oferecer mais precisão queFLOAT.
Quais são os tipos de texto em SQL?
Os tipos de texto diferem principalmente no comportamento de comprimento e armazenamento.
CHAR
- Cadeia de comprimento fixo.
CHAR(10)reserva sempre 10 caracteres.- Se o valor for menor, muitos SGBDs completam com espaços.
- Bom para códigos de tamanho fixo.
VARCHAR
- Cadeia de comprimento variável com limite máximo.
VARCHAR(255)armazena apenas os caracteres necessários.- Boa escolha padrão para nomes, emails e títulos.
TEXT
- Texto longo de comprimento variável.
- Indicado para descrições extensas, comentários e conteúdo editorial.
- Regras de indexação podem mudar conforme o SGBD.
Quais são os tipos de data e hora?
Tipos temporais devem ser usados sempre que a coluna representa data, hora ou instante de evento.
DATE
Armazena apenas a data (ano, mês e dia).
TIME
Armazena apenas a hora (hora, minuto e segundo).
DATETIME / TIMESTAMP
Armazena data e hora em conjunto.
Dependendo do SGBD, TIMESTAMP pode ter comportamento relacionado com fuso horário, enquanto DATETIME costuma ser neutro. Confirme esse detalhe antes de modelar tabelas de auditoria e eventos.
Que outros tipos de dados convém conhecer?
Muitas bases relacionais também oferecem tipos especializados:
BOOLEAN: valores verdadeiro/falso.BLOB: dados binários, como imagens e ficheiros.JSON: documentos JSON semiestruturados.
Como escolher o tipo de dados certo?
Checklist prático:
- Escolha o menor tipo que cubra com segurança os valores esperados.
- Use
DECIMALpara finanças e eviteFLOATpara dinheiro. - Prefira
VARCHARpara texto variável; useCHARapenas para formatos fixos. - Use tipos temporais próprios em vez de texto para datas e horas.
- Verifique detalhes do seu SGBD: timezone, defaults, indexação e suporte a JSON.
Escolher bem os tipos na modelação inicial reduz migrações futuras, erros de aplicação e regressões de desempenho.
Principais conclusões desta lição:
- Os tipos de dados definem os valores permitidos numa coluna e impactam diretamente a qualidade dos dados.
- Tipos numéricos servem objetivos diferentes: inteiros, valores exatos e valores aproximados.
CHAR,VARCHAReTEXTdevem ser escolhidos com base no tamanho esperado e no comportamento de armazenamento.- Campos temporais devem usar
DATE,TIMEeTIMESTAMP, não texto simples. - Escolher bem os tipos desde o início evita erros, retrabalho e problemas de desempenho.
Perguntas Frequentes
Qual é a diferença entre DECIMAL e FLOAT?
DECIMAL guarda valores exatos e é indicado para dinheiro. FLOAT guarda valores aproximados e pode introduzir diferenças de arredondamento.
Devo usar CHAR ou VARCHAR para nomes e emails?
Na maioria dos casos, use VARCHAR, porque nomes e emails têm tamanho variável. CHAR faz mais sentido para campos de tamanho fixo.
NULL é um tipo de dados?
Não. NULL representa um valor ausente ou desconhecido. É um marcador especial, não um tipo de dados.
Questões de Entrevista
Como escolher entre SMALLINT, INTEGER e BIGINT?
A escolha deve considerar o intervalo de valores esperado. Use o menor tipo que cubra esse intervalo sem risco de overflow.
Porque DECIMAL é preferido para valores monetários?
Porque DECIMAL preserva precisão exata e evita erros de arredondamento típicos de tipos de ponto flutuante.
Que problemas podem surgir ao escolher tipos de dados errados?
Problemas comuns incluem conversões incorretas, ordenação/filtragem erradas, desperdício de armazenamento, consultas mais lentas e lógica de aplicação mais complexa.