Pular para o conteúdo

Formatador e Validador de SQL - Formate Consultas SQL Online Gratuitamente

Formatador e validador de SQL gratuito. Formata automaticamente SQL com recuo e capitalização adequados. Verifique erros de sintaxe instantaneamente. Funciona com MySQL, PostgreSQL, SQL Server, Oracle.

Formatador e Validador de SQL

Formate e valide consultas SQL com recuo automático, capitalização de palavras-chave e detecção de erros de sintaxe.

Digite uma consulta SQL para ver o resultado formatado.
Calculadora de carregamento...
📚

Documentação

O que é um formatador e validador de SQL?

Um formatador de SQL é uma ferramenta que reescreve uma consulta SQL com espaçamento consistente, quebras de linha e palavras-chave em maiúsculas, para facilitar a leitura. Um validador de SQL verifica se essa mesma consulta contém erros estruturais, como uma aspa não fechada ou um parêntese ausente, sem se conectar a um banco de dados. Esta ferramenta faz as duas coisas. Ela é executada inteiramente no navegador, portanto o texto da consulta nunca é enviado a um servidor.

Como formatar uma consulta SQL

  1. Cole ou digite uma consulta SQL na caixa de entrada.
  2. A versão formatada aparece automaticamente à direita, sem a necessidade de pressionar um botão.
  3. Os erros de validação aparecem em uma lista abaixo da saída.
  4. Um botão de cópia envia a consulta formatada para a área de transferência.

Regras de formatação de SQL

Capitalização de palavras-chave

O formatador converte para maiúsculas uma lista fixa de palavras-chave SQL sempre que elas aparecem fora de uma cadeia de caracteres ou de um identificador entre aspas. A lista inclui as principais cláusulas (SELECT, FROM, WHERE, GROUP BY, ORDER BY, HAVING, LIMIT, OFFSET), palavras de junção (JOIN, LEFT, RIGHT, INNER, OUTER, FULL, CROSS, NATURAL, ON, USING), operadores de conjuntos (UNION, INTERSECT, EXCEPT), tipos de instrução (INSERT, UPDATE, DELETE, CREATE, ALTER, DROP) e operadores e conectores comuns (AND, OR, NOT, IN, BETWEEN, LIKE, AS, CASE, WHEN, THEN, ELSE, END, ALL, DISTINCT, VALUES, SET e alguns outros).

Algumas palavras que parecem palavras-chave permanecem como foram digitadas. Funções de agregação como COUNT, SUM e AVG não fazem parte da lista, portanto count(*) permanece em minúsculas se tiver sido digitado assim. As palavras que indicam a direção da ordenação, ASC e DESC, e os literais TRUE, FALSE e NULL usados isoladamente também não são alterados. O texto dentro de um literal de cadeia de caracteres ('...'), de um identificador entre aspas ("...", `...` ou [...]) ou de um comentário nunca é alterado, independentemente do conteúdo.

Quebras de linha e indentação

Cada cláusula principal começa em uma nova linha, na margem esquerda: SELECT, FROM, WHERE, GROUP BY, ORDER BY, HAVING, LIMIT e OFFSET. Uma junção começa em uma nova linha como uma unidade, portanto LEFT JOIN, FULL OUTER JOIN e CROSS JOIN permanecem juntas, sem ser divididas em duas linhas. UNION e UNION ALL recebem uma linha em branco acima e abaixo, separando as consultas que combinam. CASE e END começam em uma nova linha, enquanto WHEN, THEN e ELSE começam em uma linha indentada. Cada vírgula também inicia uma nova linha, portanto uma lista de colunas em SELECT ou GROUP BY termina com uma coluna por linha.

A indentação aparece apenas dentro de parênteses. O conteúdo de uma subconsulta ou de uma expressão agrupada é indentado em dois espaços para cada nível de aninhamento. Uma consulta sem parênteses — a maioria das consultas comuns do dia a dia — é formatada com todas as cláusulas alinhadas à margem esquerda e sem nenhuma indentação.

Exemplo: antes e depois da formatação

Antes:

1select id, first_name, last_name, email from customers where status = 'active' order by last_name, first_name;
2

Depois:

1SELECT id,
2first_name,
3last_name,
4email
5FROM customers
6WHERE status = 'active'
7ORDER BY last_name,
8first_name;
9

Todas as palavras-chave ficam em maiúsculas, e cada cláusula e coluna fica em sua própria linha. Como a consulta não tem parênteses, nenhuma linha é indentada.

Os parênteses alteram esse comportamento. Ao formatar (select count(*) from employees e where e.department_id = d.id) como parte de uma consulta maior, SELECT, FROM e WHERE internos recebem dois espaços de indentação, enquanto count permanece em minúsculas por ser um nome de função, não uma palavra-chave da lista.

O que o validador de SQL verifica

O validador procura problemas estruturais sem se conectar a um banco de dados:

  • Aspas, colchetes e comentários não fechados. Uma aspa simples ('), aspa dupla ("), crase (`), colchete ([) ou comentário de bloco (/*) que foi aberto, mas nunca fechado.
  • Parênteses desbalanceados. A quantidade de ( e ) fora de cadeias de caracteres e comentários deve ser igual.
  • Subconsultas sem parênteses. Um segundo SELECT que esteja fora de qualquer parêntese, como SELECT * FROM SELECT id FROM t. Duas consultas unidas por um operador de conjunto (UNION, UNION ALL, INTERSECT, EXCEPT) não são sinalizadas, pois esses operandos não precisam de parênteses. O mesmo vale para duas instruções separadas por um ponto e vírgula.
  • WHERE começando com AND ou OR. Um conector no início, sem nada antes dele.
  • JOIN sem uma condição correspondente. Um JOIN precisa de uma cláusula ON ou USING. CROSS JOIN e NATURAL JOIN são exceções, pois não usam uma dessas cláusulas.
  • GROUP BY ou ORDER BY vazio. A palavra-chave da cláusula sem colunas depois dela, no final da consulta.
  • Uma condição WHERE incompleta. Uma comparação sem valor, como WHERE status =, ou um WHERE isolado sem nada depois dele, no final da consulta.
  • Um SELECT sem FROM. Sinalizado apenas quando a lista de seleção contém nomes simples de colunas. Uma expressão, uma chamada de função, um literal ou uma função de valor escrita sem parênteses, como CURRENT_DATE, é válida por si só; portanto, SELECT 1 + 1 e SELECT CURRENT_DATE não são sinalizados.
  • Ordem das cláusulas. São feitas duas verificações específicas: GROUP BY não pode vir antes de WHERE, e ORDER BY não pode vir antes de GROUP BY. Essas verificações são feitas no nível superior da consulta, ignorando o que estiver dentro de uma subconsulta.

O que ele não verifica

O validador não sabe se as tabelas ou colunas realmente existem, se as colunas unidas têm tipos compatíveis ou qual será o desempenho da consulta. Ele também não sinaliza todas as regras impostas por um banco de dados real. Dois exemplos: HAVING usado sem GROUP BY é aceito, pois agrupar todo o resultado em um único grupo implícito é permitido pelo SQL; por isso, o validador não gera um erro nesse caso. Da mesma forma, ele não verifica se toda coluna não agregada da lista SELECT também aparece em GROUP BY — essa regra existe na maioria dos bancos de dados, mas esta ferramenta não a testa. A ausência de um ponto e vírgula final também não é sinalizada, pois o ponto e vírgula é um separador de instruções, não parte de uma única consulta.

Exemplo: erros detectados pelo validador

1SELECT id FROM orders
2JOIN users
3WHERE status =
4

Esta consulta produz dois erros:

  1. "Uma ou mais instruções JOIN não têm a condição ON." — JOIN users não tem uma cláusula ON nem USING.
  2. "A condição WHERE está incompleta." — status = não tem um valor depois do sinal de igualdade.

Perguntas frequentes

Esta ferramenta funciona com MySQL, PostgreSQL, SQL Server e Oracle?

Ela lida com a sintaxe SQL básica compartilhada por esses bancos de dados: SELECT, JOIN, WHERE, GROUP BY e cláusulas semelhantes. Sintaxes específicas de um banco de dados, como literais de matriz do PostgreSQL ou blocos procedurais do T-SQL, não interrompem o formatador, mas podem não receber tratamento especial.

A consulta SQL é enviada a um servidor?

Não. A formatação e a validação são executadas no navegador. O texto da consulta não é transmitido para nenhum lugar.

Ele capitaliza nomes de funções como COUNT, SUM e AVG?

Não. Apenas palavras-chave de cláusulas, palavras de junção e uma lista fixa de operadores são convertidas para maiúsculas. Nomes de funções como count, sum e avg, assim como as palavras asc, desc, true, false e null, permanecem exatamente como foram digitados.

O validador sinaliza HAVING usado sem GROUP BY?

Não. Uma cláusula HAVING sem GROUP BY agrupa todo o resultado em um único grupo, o que é válido segundo o padrão ISO/IEC 9075; portanto, o validador não trata isso como um erro.

O validador consegue detectar todos os erros de SQL?

Não. Ele verifica a estrutura — parênteses, aspas, algumas regras de ordem das cláusulas e algumas lacunas lógicas comuns, como um JOIN sem condição. Ele não verifica nomes de tabelas ou colunas, tipos de dados nem o desempenho da consulta. Ainda é necessária uma conexão real com um banco de dados para confirmar que uma consulta é executada corretamente.

A formatação altera a maneira como uma consulta é executada?

Não. A formatação altera apenas o espaço em branco e a capitalização de palavras-chave sem aspas. Tudo que estiver dentro de uma cadeia de caracteres, de um identificador entre aspas ou de um comentário é copiado sem alterações; portanto, a consulta mantém exatamente o mesmo significado.

Referências