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.
1. Textos e Caracteres (Strings Curtas e Longas)
Para nomes, documentos, e-mails, senhas, descrições, artigos HTML e observações.
⚖️ O que muda se eu usar (A) CHAR, (B) VARCHAR ou (C) TEXT?
Comparativo de Impacto Real (A vs B vs C)Opção A: Usar CHAR(n)
Opção B: Usar VARCHAR(n)
Opção C: Usar TEXT (TINY / TEXT / MEDIUM / LONG)
📌 Para que serve este Tipo SQL:
Armazenar códigos e siglas que têm SEMPRE a mesma quantidade exata de caracteres em todos os cadastros.
📍 Onde posso usar:
- • Sigla de Estado / UF: CHAR(2) -> "SP", "RJ", "MG"
- • CEP sem traço: CHAR(8) -> "01310100"
- • CPF sem pontos: CHAR(11) -> "01234567890"
- • CNPJ sem pontos: CHAR(14) -> "12345678000199"
- • UUID padrão: CHAR(36) | Hash SHA-256: CHAR(64)
⚖️ O que muda se eu escolher este?
Se escolher CHAR em vez de VARCHAR para CPF/UF, você economiza 1 byte de controle por linha e evita fragmentação quando o registro é atualizado.
📌 Para que serve este Tipo SQL:
Armazenar textos curtos ou médios cujo comprimento varia de um registro para outro, mas possui um teto máximo conhecido.
📍 Onde posso usar:
- • Nome de pessoa ou produto: VARCHAR(120)
- • E-mail de login (com UNIQUE): VARCHAR(150)
- • Senha com password_hash() do PHP: VARCHAR(255)
- • Telefone / WhatsApp: VARCHAR(20)
- • Caminho de imagem / URL: VARCHAR(255)
⚖️ O que muda se eu escolher este?
Se escolher VARCHAR(150) em vez de TEXT, você consegue colocar índice UNIQUE (essencial para e-mail e slug), definir DEFAULT e fazer buscas rápidas por igualdade (`WHERE email = :email`).
📌 Para que serve este Tipo SQL:
Texto curto armazenado fora da linha principal (raramente necessário hoje em dia).
📍 Onde posso usar:
- • Notas rápidas ou resumos curtos quando a tabela já atingiu o limite de 65.535 bytes das colunas VARCHAR.
⚖️ O que muda se eu escolher este?
Na prática, quase sempre é melhor usar VARCHAR(255) do que TINYTEXT, pois VARCHAR(255) aceita valor DEFAULT e índices completos nativamente.
📌 Para que serve este Tipo SQL:
Armazenar textos longos de vários parágrafos sem poluir a linha principal da tabela.
📍 Onde posso usar:
- • Descrição detalhada de um produto no e-commerce
- • Comentários de clientes, avaliações ou mensagens de suporte
- • Biografia de usuário, prontuário médico ou observações de pedido
⚖️ O que muda se eu escolher este?
Se o texto passar de 64 KB (ex: um artigo imenso com HTML pesado), o MySQL vai cortar ou recusar o INSERT! Se puder passar de 64 KB, mude para MEDIUMTEXT.
📌 Para que serve este Tipo SQL:
Armazenar conteúdos editoriais extensos, páginas completas de blog em HTML/Markdown ou templates de documentos.
📍 Onde posso usar:
- • Corpo completo de notícias, artigos de blog e apostilas em HTML/Markdown
- • Termos de uso, contratos jurídicos completos
- • Logs detalhados de erro ou respostas de API externas em texto
⚖️ O que muda se eu escolher este?
Muda o teto de 64 KB (do TEXT comum) para 16 Megabytes, custando apenas 1 byte a mais no cabeçalho do campo (3 bytes em vez de 2). É o tipo ideal para CMS e Blogs!
📌 Para que serve este Tipo SQL:
Capacidade extrema de texto para livros inteiros, transcrições massivas ou dumps de dados.
📍 Onde posso usar:
- • Acervos literários completos, código-fonte de projetos inteiros ou arquivos XML/CSV gigantes guardados para processamento.
⚖️ O que muda se eu escolher este?
Suporta até 4 GB por célula, mas cuidado no PHP: ler uma coluna LONGTEXT de centenas de megabytes com fetch() comum pode estourar o `memory_limit` do PHP!