Pack Camo

Formatador e embelezador SQL

Indente e organize SQL para PostgreSQL, MySQL, SQLite, SQL Server e mais.

Tudo roda localmente — nada é enviado para servidor nenhum.

SQL

7 linhas · 442 caracteres

SQL formatado

Formatando…

SQL legível no dialeto que você usa

Este formatador SQL aceita consultas de qualquer tamanho, até várias instruções de uma vez, e as indenta de forma consistente: uma cláusula por linha, colunas e condições alinhadas e palavras-chave na caixa que você preferir. Ele entende a sintaxe de mais de quinze dialetos, do PostgreSQL, MySQL e SQL Server ao BigQuery, Snowflake e Oracle PL/SQL, então operadores, aspas e placeholders específicos de cada dialeto ficam intactos. Mude para Minificar para transformar a consulta de volta em uma única linha para um arquivo de configuração ou uma string no seu código. Tudo roda no seu navegador; suas consultas nunca são enviadas.

Como formatar uma consulta SQL

  1. 1Cole seu SQL no painel da esquerda ou comece pela consulta de exemplo.
  2. 2Escolha o dialeto em que a consulta foi escrita. Standard SQL funciona para a maioria das consultas simples; escolher o dialeto certo importa para coisas como os casts :: do PostgreSQL, os identificadores com crase do MySQL ou os [brackets] do SQL Server.
  3. 3Defina a caixa das palavras-chave e a indentação, e abra Mais opções para a caixa de tipos de dados e funções, indentação tabular, posição de AND/OR e linhas em branco entre instruções.
  4. 4A consulta formatada aparece à direita enquanto você digita. Se a consulta não puder ser analisada, a linha e a coluna do problema são mostradas.
  5. 5Copie o resultado, baixe como arquivo .sql ou escolha Minificar para reduzi-lo a uma linha.

Por que formatar SQL?

SQL é escrito uma vez e lido muitas: em code review, num log de consultas lentas, numa migração que alguém precisa depurar às 2 da manhã. Uma consulta gerada por um ORM ou copiada de um log costuma chegar como uma linha enorme. Colocar cada cláusula na própria linha e indentar as subconsultas deixa a estrutura visível: quais tabelas são unidas, por quais colunas e quais condições valem onde.

Uma formatação consistente também deixa os diffs menores. Quando todo o time formata as consultas do mesmo jeito, uma condição alterada aparece como uma única linha modificada em vez de um parágrafo reorganizado.

Opções de formatação explicadas

Caixa das palavras-chave
UPPER faz SELECT, FROM e WHERE se destacarem dos nomes de tabelas e colunas, a convenção mais comum. lower combina com times que acham as maiúsculas poluídas. Preservar mantém as palavras-chave como você digitou.
Indentação
Dois ou quatro espaços, ou tabs. Os estilos tabulares completam as palavras-chave até uma coluna de largura fixa para que as expressões fiquem alinhadas depois delas.
Posição de AND / OR
No início coloca cada operador lógico no começo da linha, o que facilita comentar uma condição; no fim o deixa no final da linha anterior.
Largura da expressão
Expressões entre parênteses menores que esse número de caracteres ficam em uma linha; as maiores são quebradas.
Operadores compactos
Escreve a+b em vez de a + b. Mais compacto, porém mais difícil de ler.

Escolhendo o dialeto certo

Os dialetos SQL divergem em mais coisas do que você imagina: como os identificadores são delimitados ("name", `name` ou [name]), como é um placeholder (?, $1, :name, @param) e quais palavras são reservadas. O formatador usa uma gramática separada para cada dialeto, então não confunde o corpo de uma função $$ do PostgreSQL ou um comentário # do MySQL com outra coisa.

Se aparecer um erro de análise numa consulta que você sabe que é válida, o dialeto é a primeira coisa a verificar. Standard SQL é rigoroso de propósito e não conhece todas as extensões de cada fornecedor.

Minificando SQL

Minificar faz o contrário de formatar: remove os comentários e reduz todo o espaço em branco a espaços simples, gerando uma linha que você pode colar num arquivo YAML, numa variável de ambiente ou numa string literal. Strings literais, identificadores entre aspas e corpos com dollar-quoting são copiados exatamente, então um valor como 'two spaces' mantém os dois espaços. Hints do otimizador escritos como /*+ … */ e os comentários executáveis do MySQL /*! … */ são mantidos, porque mudam como a consulta é executada.

Trabalhando com JSON? O formatador JSON faz o mesmo com documentos JSON, e o minificador de código cuida de CSS, JavaScript e HTML.

Perguntas frequentes

Meu SQL é enviado para um servidor?
Não. A formatação e a minificação rodam inteiramente no seu navegador, então consultas com nomes de tabelas, dados de clientes ou credenciais nunca saem do seu dispositivo.
Quais dialetos SQL são suportados?
Standard SQL, PostgreSQL, MySQL, MariaDB, SQLite, SQL Server (T-SQL), Oracle PL/SQL, BigQuery, Snowflake, Amazon Redshift, Spark SQL, Hive, Trino e Presto, DuckDB, ClickHouse, IBM Db2 e Db2 for IBM i, SingleStoreDB, TiDB e Couchbase N1QL.
A formatação muda o que minha consulta faz?
Não. Só mudam os espaços em branco e, se você escolher, a caixa das palavras-chave, tipos de dados e funções. Identificadores entre aspas e strings literais nunca são alterados. Mudar a caixa de identificadores sem aspas é seguro na maioria dos bancos de dados, mas deixe em Preservar se o seu banco diferencia maiúsculas e minúsculas neles.
Por que aparece um erro de análise?
Ou a consulta tem um erro de sintaxe, como um parêntese ou aspas não fechados, ou usa uma sintaxe que o dialeto selecionado não inclui. A mensagem mostra a linha e a coluna onde a análise parou; tente o dialeto que seu banco de dados realmente usa.
Posso formatar várias instruções de uma vez?
Sim. Separe-as com ponto e vírgula e cada uma é formatada por vez, com o número de linhas em branco entre elas que você escolher.
Os comentários são mantidos?
Ao formatar, sim: comentários de linha e de bloco ficam onde estavam. Minificar os remove, exceto hints do otimizador e comentários executáveis do MySQL.
Como minificar uma consulta SQL em uma linha?
Escolha Minificar no topo da ferramenta. Os comentários são removidos e os espaços reduzidos, enquanto strings literais e identificadores entre aspas ficam exatamente como foram escritos.