Formatador de SQL online
-- o sql formatado aparecerá aquiO formatador de SQL quebra uma query longa em linhas com indentação por cláusula, deixando SELECT, FROM, JOIN, WHERE e GROUP BY alinhados. Uma query de trinta linhas mal formatada e a mesma query formatada têm custo de leitura completamente diferente.
Dialetos
A formatação usa o sql-formatter e cobre a sintaxe comum a PostgreSQL, MySQL, SQL Server, Oracle e SQLite. Construções muito específicas de um banco podem cair em um tratamento genérico, que reindenta sem tentar entender a semântica, em vez de estragar a query.
Bloco procedural é o limite conhecido. PL/SQL com BEGIN e END aninhados, ou T-SQL com fluxo de controle, não é SQL declarativo e o formatador é conservador ali de propósito: prefere devolver um resultado morno a reescrever errado.
Formatar é a metade barata da revisão
Formatar não muda plano de execução nem resultado, mas muda o que você enxerga. JOIN sem condição, parêntese que fecha no lugar errado em um OR misturado com AND, e subquery correlacionada escondida no meio de uma linha de duzentos caracteres são todos erros que só aparecem depois da indentação.
A outra metade é o EXPLAIN. Nenhuma formatação diz que você esqueceu um índice.
Quando usar
Query capturada de log do ORM, consulta herdada que ninguém formatou, SQL colado de um chamado, revisão de pull request com migração grande. Formatar antes de revisar é o que torna possível enxergar o problema.
Nada do que você cola aqui sai do seu navegador. O processamento é todo local, em JavaScript, sem envio para servidor, sem log e sem armazenamento.
Perguntas frequentes
A formatação muda o resultado da query?
Não. Só muda espaço em branco e quebra de linha. A query formatada é semanticamente idêntica à original e produz exatamente o mesmo plano de execução.
Funciona com query de qualquer banco?
Funciona com a sintaxe comum aos principais bancos relacionais. Bloco procedural muito específico, como PL/SQL com BEGIN e END aninhados, cai em um tratamento conservador que reindenta sem reescrever.
Posso colar query com dados reais?
Pode. A formatação acontece no navegador e nada é enviado para servidor, então valores literais dentro da query não saem da sua máquina.
Referências
- sql-formatterA biblioteca que faz a formatação aqui. O README lista os dialetos suportados.