Ferramentas
Guias

Formatador de SQL

Formatação

Formate o SQL em muitos dialetos (MySQL, PostgreSQL, T-SQL e mais) com o sql-formatter, ou minifique-o.

100% no cliente Sem backend
SQL
Saída
Nesta página

O que é um formatador de SQL?#

Um formatador de SQL transforma uma consulta escrita para o motor — muitas vezes amontoada numa linha, ou colada de um registro com indentação aleatória — numa consulta escrita para um humano. As palavras-chave ficam nas suas próprias linhas, as colunas alinham-se, as subconsultas avançam um nível, e uma cláusula WHERE com cinco condições AND deixa de ser uma parede de texto. A operação inversa, minificar, colapsa todo esse espaço em branco de volta para uma única linha para quando uma consulta precisa de viajar por um arquivo de configuração ou um parâmetro de API.

O que torna a formatação de SQL picuinheira é que cada base de dados tem o seu próprio dialeto. Uma consulta Postgres com RETURNING, uma consulta MySQL com identificadores entre crases, uma consulta SQL Server com TOP (n), e uma consulta BigQuery com literais de struct e array parecem todas diferentes, e um formatador que finge que existe um SQL universal único vai errar os casos extremos de forma subtil. Esta página trata disso usando o sql-formatter com seleção explícita de dialeto: SQL padrão, MySQL, MariaDB, PostgreSQL, SQLite, T-SQL, PL/SQL, BigQuery, Redshift, Snowflake, DB2 e Trino. Escolhe-se o que a sua base de dados realmente fala, e o formatador analisa em conformidade.

Como usar#

  1. Cole a sua consulta no painel da esquerda, ou clique em Exemplo para carregar uma pequena consulta.
  2. Escolha um Dialeto na barra de ferramentas — o dialeto da sua base de dados. O sql predefinido é um sabor genérico seguro; mude para postgresql, mysql, tsql e por aí em diante quando a consulta usa sintaxe específica do dialeto.
  3. Escolha a Indentação: 2, 4 ou tabulação. Quatro espaços é comum para SQL porque mantém listas longas de colunas legíveis.
  4. Clique numa ação:
    • Formatar — re-indentar, partir a consulta em linhas lógicas, e pôr palavras-chave em maiúsculas por padrão de modo a que SELECT, FROM e WHERE se destaquem dos identificadores.
    • Minificar — retirar comentários de linha -- e de bloco /* */, depois colapsar cada sequência de espaços em branco para um único espaço. As mudanças de linha tornam-se espaços, o que é seguro para SQL porque as instruções terminam com ponto e vírgula, não com mudança de linha.
  5. Leia o resultado no painel Saída. Use Copiar para o recolher; Limpar repõe ambos os painéis.

Principais funcionalidades#

  • Doze dialetos. MySQL, MariaDB, PostgreSQL, SQLite, T-SQL, PL/SQL, BigQuery, Redshift, Snowflake, DB2, Trino, mais SQL padrão genérico. A gramática do formatador muda para corresponder, pelo que as palavras-chave específicas do dialeto são posicionadas corretamente.
  • Maiúsculas e minúsculas em palavras-chave. Formatar põe palavras-chave em maiúsculas por padrão (pelo que select se torna SELECT) e deixa os seus identificadores em paz. Isto é puramente cosmético e nunca altera o que a consulta faz.
  • Minificar seguro. O espaço em branco colapsa para espaços simples; o SQL é terminado por pontos e vírgula, pelo que juntar linhas não consegue fundir duas instruções como pode acontecer em linguagens sensíveis a mudanças de linha.
  • Remoção de comentários ao minificar. Tanto os comentários -- como /* */ são removidos quando se minifica, mantendo o payload compacto.
  • Dois painéis, pronto a copiar, totalmente no lado do cliente. O formatador corre no seu navegador; a consulta não é enviada para lado nenhum.

Exemplo prático#

Uma consulta de relatório despejada numa linha, com um comentário, um join, e um GROUP BY:

Entrada:

select u.id,u.name,count(o.id) as orders from users u join orders o on o.user_id=u.id where u.status='active' and o.created_at >= '2026-01-01' group by u.id,u.name order by orders desc

Escolha postgresql como Dialeto, depois clique em Formatar com 2 espaços:

SELECT
  u.id,
  u.name,
  count(o.id) AS orders
FROM
  users u
  JOIN orders o ON o.user_id = u.id
WHERE
  u.status = 'active'
  AND o.created_at >= '2026-01-01'
GROUP BY
  u.id,
  u.name
ORDER BY
  orders DESC

Cada cláusula tem agora a sua própria linha, a condição de join é visível, e os dois predicados do WHERE estão separados para que se perceba num relance que o filtro de data é >=, não >. A maiusculização das palavras-chave foi para maiúsculas enquanto os nomes das colunas se mantiveram exatamente como estavam escritos. Clique em Minificar na mesma entrada e obtém a forma de uma linha de volta, pronta a colar numa configuração ou num parâmetro ?query=:

select u.id,u.name,count(o.id) as orders from users u join orders o on o.user_id=u.id where u.status='active' and o.created_at >= '2026-01-01' group by u.id,u.name order by orders desc

FAQ#

Que dialeto devo escolher?#

Corresponda à sua base de dados. Se não tem a certeza, sql genérico é um ponto de partida razoável e trata das cláusulas comuns corretamente. Mude para o dialeto específico quando a consulta usa sintaxe que a gramática genérica não espera — RETURNING (Postgres), identificadores com crases (MySQL), TOP (n) (T-SQL), ou literais de struct/array (BigQuery). Escolher o dialeto errado normalmente ainda formata, mas pode posicionar mal uma palavra-chave exótica.

Porque é que Formatar põe palavras-chave em maiúsculas mas não os meus nomes de coluna?#

Porque pôr palavras-chave em maiúsculas é uma convenção de legibilidade que nunca altera o significado — SELECT e select são idênticos para o motor — enquanto os seus identificadores podem ser sensíveis a maiúsculas e minúsculas (Postgres dobrar identificadores sem aspas para minúsculas; MySQL é sensível a maiúsculas em algumas plataformas). Deixar os identificadores em paz é a predefinição segura. Se prefere palavras-chave em minúsculas, formate a consulta e depois faça uma passagem manual.

O minificar preserva scripts com várias instruções?#

Colapsa cada sequência de espaços em branco para um único espaço, incluindo mudanças de linha, mas mantém os pontos e vírgula exatamente onde estavam. Por isso SELECT 1; SELECT 2; mantém-se como duas instruções separadas por ;. Dito isto, para um script de migração longo com muitas instruções, uma forma minificada de uma linha é difícil de ler e difícil de depurar — o minificar serve uma consulta única ou um lote curto.

A minha consulta é enviada para algum lado?#

Não. O formatador está empacotado na página e corre localmente no seu navegador. Nada sobre o seu SQL — nem os nomes das tabelas, nem os literais — sai do separador.