Guia Completo de Decisão (A vs B vs C)
⚡ Abrir Lista Compacta de Todos os Comandos & Tipos →

Todos os Tipos SQL: Para que servem, Onde usar e O que muda entre A, B ou C

Consulte todos os tipos de campos do banco de dados organizados por categoria funcional. Entenda exatamente para que serve cada tipo, onde aplicar no seu projeto e o que muda na prática se você escolher o tipo A, B ou C na hora de desenhar no DrawDB e programar em PHP.

2. Números Inteiros (Contagens, Quantidades e Códigos)

Para números sem vírgula: idades, estrelas, estoque, visualizações, anos e IDs.

5 Tipos SQL nesta categoria

⚖️ O que muda se eu usar (A) TINYINT, (B) SMALLINT, (C) INT ou (D) BIGINT? E Signed vs UNSIGNED?

Comparativo de Impacto Real (A vs B vs C)
A Economia Máxima de RAM e Disco

Opção A: TINYINT (1 Byte) ou SMALLINT (2 Bytes)

🔄 O que muda no banco: Você restringe fisicamente o número máximo (255 no TINYINT UNSIGNED; 65.535 no SMALLINT UNSIGNED) e gasta de 50% a 87% menos espaço que um INT ou BIGINT.
✅ Vantagem: Índices menores cabem inteiros na memória RAM do servidor, acelerando filtros em milhões de linhas.
⚠️ Cuidado / Limitação: Se o valor tentar passar do limite (ex: tentar gravar 300 em um TINYINT), o banco rejeita com erro Out of Range.
🎯 Use para valores naturalmente pequenos: idade, estrelas (1-5), dia/mês, parcelas (TINYINT) ou páginas de livro, ano, ordem de exibição (SMALLINT).
B Padrão Equilibrado (Até 2 ou 4 Bilhões)

Opção B: INT / INTEGER (4 Bytes)

🔄 O que muda no banco: Gasta 4 bytes fixos e comporta até 2.147.483.647 (com sinal negativo) ou 4.294.967.295 (UNSIGNED sem sinal negativo).
✅ Vantagem: Atende 99% das quantidades do mundo real (estoque de produtos, duração em segundos, visualizações, IDs de tabelas normais).
⚠️ Cuidado / Limitação: Estoura se você tentar salvar algo acima de 4 bilhões (como telefone com DDD, CPF ou transações de uma rede social gigante).
🎯 Use como padrão para quantidades de estoque, contadores e durações.
C Escala Infinita (Até 18 Quintilhões)

Opção C: BIGINT (8 Bytes) + Diferença UNSIGNED

🔄 O que muda no banco: Gasta 8 bytes por coluna (o dobro do INT), mas nunca esgota sua capacidade numérica. E marcar UNSIGNED proíbe números negativos e dobra o limite positivo!
✅ Vantagem: Zero risco de estourar IDs em tabelas de logs, pedidos, mensagens ou eventos financeiros.
⚠️ Cuidado / Limitação: Gasta o dobro de memória nos índices. E lembre-se: PK e FK precisam ser idênticas (se a PK é BIGINT UNSIGNED, a FK também tem que ser BIGINT UNSIGNED).
🎯 Use para Chaves Primárias (PK/FK) de tabelas grandes e contadores globais.
TINYINT / TINYINT UNSIGNED 📐 DrawDB: TINYINT | Flags: UN (se não aceitar negativo)
💾 1 Byte (8 bits) — De -128 a 127 (Signed) ou 0 a 255 (Unsigned)

📌 Para que serve este Tipo SQL:

Guardar números inteiros muito pequenos cujo valor jamais passará de 255.

📍 Onde posso usar:

  • • Idade de uma pessoa (0 a 150)
  • • Nota de avaliação / estrelas (1 a 5 ou 0 a 10)
  • • Dia da semana (1 a 7), mês do ano (1 a 12)
  • • Número de parcelas no cartão (1 a 24)

⚖️ O que muda se eu escolher este?

Gasta apenas 1 byte (8x menor que um BIGINT). Se marcar UNSIGNED, impede valores negativos como idade -5.

🐘 PHP PDO: Use PDO::PARAM_INT e converta no PHP com (int) $valor.
Ver código SQL/PHP →
SMALLINT / SMALLINT UNSIGNED 📐 DrawDB: SMALLINT | Flags: UN
💾 2 Bytes (16 bits) — De -32.768 a 32.767 (Signed) ou 0 a 65.535 (Unsigned)

📌 Para que serve este Tipo SQL:

Guardar números inteiros pequenos/médios que passam de 255 mas não passam de 65 mil.

📍 Onde posso usar:

  • • Ano de publicação/fabricação (ex: 1500 a 2100)
  • • Quantidade de páginas de um livro ou carga horária de curso
  • • Quantidade de unidades de um item dentro de um pedido
  • • Ordem de exibição de categorias/banners (1, 2, 3...)

⚖️ O que muda se eu escolher este?

Economiza metade do espaço de um INT comum (2 bytes vs 4 bytes) mantendo folga até 65.535.

🐘 PHP PDO: Use PDO::PARAM_INT.
Ver código SQL/PHP →
MEDIUMINT / MEDIUMINT UNSIGNED 📐 DrawDB: MEDIUMINT (Específico do MySQL/MariaDB)
💾 3 Bytes (24 bits) — De -8.388.608 a 8.388.607 ou 0 a 16.777.215 (Unsigned)

📌 Para que serve este Tipo SQL:

Faixa intermediária exclusiva do MySQL para contadores de até 16,7 milhões.

📍 Onde posso usar:

  • • IDs de tabelas de médio porte ou códigos municipais IBGE (7 dígitos) em projetos exclusivamente MySQL.

⚖️ O que muda se eu escolher este?

Se você migrar o banco para PostgreSQL no futuro, o Postgres não tem MEDIUMINT (terá que virar INTEGER de 4 bytes). Na dúvida, use INT.

🐘 PHP PDO: Trabalhe normalmente com int no PHP e PDO::PARAM_INT.
Ver código SQL/PHP →
INT / INTEGER (Signed e UNSIGNED) 📐 DrawDB: INT (ou INTEGER)
💾 4 Bytes (32 bits) — De -2,14 bilhões a +2,14 bilhões (ou 0 a 4,29 bilhões Unsigned)

📌 Para que serve este Tipo SQL:

O inteiro universal padrão de qualquer banco de dados relacional.

📍 Onde posso usar:

  • • Saldo de estoque de produtos (`estoque_atual INT NOT NULL DEFAULT 0`)
  • • Duração de vídeos ou músicas em segundos
  • • Contador de visualizações, downloads ou curtidas
  • • Chaves primárias e estrangeiras de tabelas de até centenas de milhões de linhas

⚖️ O que muda se eu escolher este?

É 100% compatível com todos os bancos (MySQL, PostgreSQL, SQLite, SQL Server) e tem velocidade máxima no processador.

🐘 PHP PDO: Nunca use INT para CPF, CEP ou Telefone (pois apaga zeros à esquerda e estoura 32 bits)!
Ver código SQL/PHP →
BIGINT / BIGINT UNSIGNED 📐 DrawDB: BIGINT | Flags: UN
💾 8 Bytes (64 bits) — Até 9 quintilhões (Signed) ou 18,4 quintilhões (Unsigned)

📌 Para que serve este Tipo SQL:

Números inteiros gigantescos, chaves primárias de alto volume e valores monetários armazenados em centavos.

📍 Onde posso usar:

  • • Chave primária (`id BIGINT UNSIGNED AUTO_INCREMENT`) de pedidos, logs, mensagens, notas fiscais
  • • Contadores globais de redes sociais ou eventos de telemetria
  • • Valores em centavos quando se usa o padrão Money Pattern

⚖️ O que muda se eu escolher este?

Garante que a tabela nunca vai travar por falta de IDs disponíveis, ao custo de usar 8 bytes por coluna em vez de 4.

🐘 PHP PDO: O PHP 8 de 64-bits suporta inteiros de 64-bits nativamente até 9.223.372.036.854.775.807 (PHP_INT_MAX).
Ver código SQL/PHP →