Formatador SQL
Indente uma consulta SQL para poder lê-la, inteiramente no seu navegador. Nada é executado e nenhum banco de dados é contatado.
Roda inteiramente no seu navegador. Nada é enviado, registrado ou armazenado.
Cole uma consulta que chegou como uma linha só e leia-a direito. A formatação acontece no seu navegador: a instrução, os nomes das tabelas e qualquer valor parado na cláusula WHERE nunca saem da sua máquina.
Como funciona
A instrução é dividida em pedaços — strings, comentários, nomes entre aspas, números, palavras, operadores — e depois reescrita com quebras de linha e indentação escolhidas a partir dessa sequência. As cláusulas começam uma linha, as condições se alinham sob a cláusula a que pertencem, e uma subconsulta é indentada dentro dos parênteses dela.
Cada pedaço é reescrito exatamente como chegou. Só os espaços entre eles, e a caixa das palavras que a ferramenta reconhece, podem mudar — o que significa que a instrução que sai é a instrução que entrou. Essa propriedade é garantida pelos testes, e não deixada à inspeção.
Um parêntese que contém uma instrução própria é quebrado em linhas; uma chamada de função, uma lista IN ou um parêntese que apenas agrupa uma expressão ficam em uma linha, porque quebrar esses deixa a consulta mais alta sem deixá-la mais clara.
Exemplos
| Caso | Entrada | Resultado |
|---|---|---|
| Uma consulta em uma linha | select id, name from users where active = 1 order by name | SELECT id, name FROM users WHERE active = 1 ORDER BY name |
Perguntas frequentes
A minha consulta é enviada para algum lugar?
Não. O formatador é JavaScript rodando nesta página. Nada é enviado, nada é registrado e nada é armazenado — você pode desligar a sua conexão de rede e a ferramenta continua funcionando.
Ele verifica se o meu SQL é válido?
Não, e vale ser claro sobre isso. Ele reorganiza espaços em branco. Não tem esquema, nem gramática de dialeto, nem banco de dados, então ele vai indentar sem reclamar uma instrução que nenhum servidor aceitaria. As únicas coisas que ele recusa são uma string ou um comentário que nunca fecham, porque aí ele não consegue distinguir código de texto.
Que dialeto ele entende?
Ele reconhece os estilos de aspas dos mais comuns — aspas simples para strings, e aspas duplas, crases ou colchetes para nomes — então ele não vai estropiar MySQL, PostgreSQL, SQLite ou SQL Server. Ele não verifica a gramática do dialeto, porque não faz análise sintática.
Para que serve a opção de barra invertida?
O MySQL trata uma barra invertida dentro de uma string como escape, então 'it\'s' é uma string só. O padrão SQL — e o PostgreSQL, o SQLite, o SQL Server e o Oracle — não trata, então ali o mesmo texto é uma string seguida de outra coisa. Não há como saber só pela consulta, e adivinhar corromperia um dialeto ou o outro, então virou uma chave. Deixe desligada a menos que você esteja no MySQL.
Por que o nome da minha coluna mudou de caixa?
Porque ele é escrito como uma palavra-chave. A opção de caixa mexe nas palavras que a ferramenta reconhece, e ela não consegue distinguir uma coluna chamada "key" da palavra-chave. Nomes que vêm logo depois de TABLE, INTO, FROM, JOIN ou UPDATE ficam intocados, já que essas são as posições em que a caixa de um nome pode realmente importar. Se você preferir que nada se mexa, coloque a opção de palavras-chave em deixar como está escrito, ou ponha o nome entre aspas.
Bom saber
- Nada nesta página executa SQL nem conecta a um banco de dados. A instrução é texto, e é tratada como texto.
- O layout é determinístico: a mesma instrução com as mesmas opções sempre produz a mesma saída, e formatar uma instrução já formatada não muda nada.
- Expressões CASE, junções, subconsultas e listas de colunas de CREATE TABLE têm, cada uma, uma regra. O que as regras não cobrem fica na linha em que cair, em vez de ser adivinhado.
Todas as ferramentas de Código