No dia a dia do desenvolvimento, é comum precisarmos validar tipos de dados, tamanhos de campos ou permissões de nulidade para garantir que nossas Migrations ou Queries estejam sincronizadas com o banco de dados. No MySQL, existem duas formas principais de obter essas informações de maneira filtrada.
Neste artigo, utilizaremos como exemplo uma tabela genérica chamada produtos_estoque.
1. O Método Pragmático: SHOW COLUMNS
Link para o cabeçalho
O comando SHOW COLUMNS é a ferramenta de “campo” do desenvolvedor. Ele é direto, fácil de lembrar e retorna o essencial para o trabalho imediato.
Exemplo de Uso Link para o cabeçalho
Se quisermos verificar apenas as colunas de precificação e fornecedor, ignorando o resto da tabela:
SHOW COLUMNS FROM produtos_estoque
WHERE Field IN ('preco_venda', 'custo_aquisicao', 'fornecedor_id', 'status_disponibilidade');
```
Vantagem: Sintaxe curta e leitura rápida.
Resultado: Exibe Field, Type, Null, Key, Default e Extra.
2. O Método Analítico: INFORMATION_SCHEMA
Link para o cabeçalho
Quando a necessidade é gerar um relatório técnico, documentar o sistema ou alimentar uma ferramenta de auditoria, recorremos ao INFORMATION_SCHEMA. Ele é um banco de dados virtual que contém metadados sobre todos os outros bancos de dados.
Exemplo de Uso Link para o cabeçalho
Com este método, podemos renomear os cabeçalhos para português e até forçar uma ordem específica de exibição usando a função FIELD():
SELECT
COLUMN_NAME AS 'Coluna',
COLUMN_TYPE AS 'Tipo/Tamanho',
IS_NULLABLE AS 'Aceita Nulo',
COLUMN_DEFAULT AS 'Valor Padrão'
FROM
INFORMATION_SCHEMA.COLUMNS
WHERE
TABLE_NAME = 'produtos_estoque'
AND TABLE_SCHEMA = 'nome_do_seu_banco' -- Importante para evitar duplicidade
AND COLUMN_NAME IN ('preco_venda', 'custo_aquisicao', 'fornecedor_id')
ORDER BY
FIELD(COLUMN_NAME, 'preco_venda', 'custo_aquisicao', 'fornecedor_id');
Vantagem: Total controle sobre as colunas retornadas e possibilidade de filtros complexos (ex: “listar apenas colunas do tipo decimal”).
Dica: Sempre inclua o TABLE_SCHEMA para garantir que você está olhando para o banco de dados correto, caso existam tabelas com nomes iguais em instâncias diferentes.
Conclusão Link para o cabeçalho
- Use
SHOW COLUMNSpara consultas rápidas durante o desenvolvimento (o famoso “deixa eu ver como é esse campo mesmo?”). - Use
INFORMATION_SCHEMApara scripts automáticos, relatórios de estrutura ou quando a ordem das colunas no resultado for crucial.