Formatador SQL
Formate e deixe legíveis queries SQL bagunçadas, ou compacte-as de volta, tudo direto no seu navegador.
Ferramentas relacionadas
Sobre esta ferramenta
Sabe aquela query que sai do ORM, do slow query log ou de uma mensagem no Slack de um colega, toda espremida em uma única linha? O banco de dados não liga para espaços em branco, mas você liga: achar o JOIN sem índice ou entender qual condição do WHERE está filtrando as linhas erradas vira uma leitura caractere por caractere. Este formatador SQL pega esse bloco de texto e reorganiza no formato em que a gente costuma escrever SQL à mão — uma cláusula por linha, colunas e atribuições do SET listadas na vertical e condições indentadas abaixo do WHERE.
A formatação funciona reconhecendo as palavras-chave de cláusula mais comuns (SELECT, FROM, WHERE, JOIN e suas variações, GROUP BY, ORDER BY, HAVING, LIMIT, INSERT INTO, VALUES, UPDATE, SET etc.) e quebrando a linha em cada uma delas. As condições AND/OR dentro do WHERE ganham um nível extra de indentação, para que o agrupamento lógico fique visível. A lista de colunas do SELECT e as atribuições do SET são separadas uma por linha nas vírgulas de nível superior — mas a vírgula dentro de uma função como COALESCE(a, b) ou de uma subquery fica onde está, porque quebrar dentro dos parênteses só pioraria a leitura. Strings e identificadores entre aspas são tratados à parte, então uma palavra-chave que aparece dentro de um texto nunca é confundida com sintaxe SQL de verdade.
Minificar faz o caminho inverso: remove indentação, quebras de linha e espaços extras e devolve a query em uma única linha compacta, com um espaço simples entre os tokens. É útil quando você precisa colar a query em um lugar que não lida bem com várias linhas — um valor de configuração, um comando no terminal ou uma mensagem de log — sem mudar em nada o que ela faz.
Vale lembrar: isto é um formatador, não um validador nem um cliente de banco. Ele não confere sua query contra a gramática de um banco específico, não executa nada e não vai pegar um erro de sintaxe como um parser de verdade pegaria. O que ele faz bem é deixar legível qualquer SQL razoavelmente padrão — MySQL, PostgreSQL, SQLite, SQL Server e dialetos parecidos compartilham as mesmas cláusulas principais — sem alterar o significado da query.
Como tudo roda localmente no navegador, dá para colar sem medo queries reais de produção, tiradas do slow query log ou de um script de migration interno, mesmo com nomes de tabelas e colunas que você não mandaria para um site qualquer. Com o resultado pronto, copie direto ou use o botão “Enviar para” para mandar o texto a outra ferramenta do kit — por exemplo, para comparar duas versões da mesma query.
Perguntas frequentes
A ferramenta valida meu SQL ou se conecta a um banco de dados? expand_more
Não. É um formatador de texto, não um parser nem um cliente de banco — ele não confere a query contra a gramática de um banco específico e nunca executa nada. Só reorganiza espaços e quebras de linha em torno das palavras-chave reconhecidas.
Formatar pode mudar o que a minha query faz? expand_more
Não. Só mudam espaços, indentação e quebras de linha. Palavras-chave, identificadores, literais e pontuação são mantidos exatamente como estão, então a query formatada é funcionalmente idêntica à original.
Ele trata corretamente vírgulas dentro de funções? expand_more
Sim. Vírgulas dentro de parênteses — como os argumentos de COALESCE(a, b) ou uma subquery — ficam na mesma linha. Só as vírgulas de nível superior na lista de colunas do SELECT ou nas atribuições do SET são quebradas em linhas separadas.
Quais dialetos SQL são suportados? expand_more
O formatador reconhece as cláusulas padrão comuns a MySQL, PostgreSQL, SQLite, SQL Server e dialetos parecidos (SELECT, FROM, WHERE, JOIN, GROUP BY, ORDER BY, HAVING, INSERT INTO, UPDATE e outras). Ele não é específico de um dialeto, então sintaxes exclusivas de um banco podem não ficar tão bem organizadas.
É seguro colar uma query real de produção aqui? expand_more
Sim. Formatar e minificar rodam totalmente no seu navegador — nada é enviado a um servidor — então você pode usar com queries que citam nomes reais de tabelas, colunas ou valores que não mandaria para outro lugar.