Formatador SQL
Formata texto SQL para melhor legibilidade.
Antes
Depois
O que é um formatador de SQL?
Uma instrução SQL longa apertada numa única linha não revela nada da sua estrutura. Esta ferramenta insere quebras de linha em torno de palavras-chave como SELECT, FROM, WHERE e JOIN, e indenta as subconsultas aninhadas, de modo que a forma da instrução possa ser acompanhada com o olhar. A formatação nunca altera o significado.
O dialeto que você escolher influencia o resultado. MySQL, PostgreSQL, Oracle e SQL Server têm cada um a sua própria sintaxe, então escolha o que corresponde ao seu banco de dados. Note também que um SQL com erro de sintaxe não pode ser analisado corretamente e pode voltar sem formatação — nesse caso, verifique primeiro a validade do próprio SQL.
Passos para formatar SQL
- Cole o seu SQL Cole no campo o SQL que quer formatar. Separando as instruções com ponto e vírgula, você pode processar várias de uma vez.
- Escolha o dialeto Selecione o que corresponde ao banco de dados em uso. Se não souber, o SQL padrão formata ainda assim a grande maioria das sintaxes.
- Ajuste a indentação e as maiúsculas Adapte a largura da indentação à convenção da sua equipe. Ao ativar as maiúsculas, as palavras-chave se alinham e a instrução fica mais legível.
- Formate e confira o resultado Pressione «Formatar» e o resultado aparece, pronto para ser colado direto numa revisão de código ou numa especificação.
Dicas para aproveitar melhor
- Palavras-chave SQL como SELECT, FROM, WHERE e JOIN são automaticamente quebradas e alinhadas, e subconsultas aninhadas são recuadas corretamente.
- Ativar "Capitalizar palavras-chave" converte automaticamente as palavras-chave para maiúsculas, melhorando a legibilidade.
- Ajuste o tamanho do recuo para seguir as diretrizes de estilo de código da sua equipe.
- Colar o SQL formatado em revisões de código ou documentação facilita muito a leitura.
- Suporta os principais dialetos SQL, incluindo MySQL, PostgreSQL e Oracle.
Quando um formatador de SQL é útil
Decifrar um SQL que lhe foi passado
Formate uma instrução de uma única linha extraída de um log ou do código de uma aplicação e a estrutura das condições de junção e de filtro fica clara num relance.
Organizar antes de uma revisão de código
Entregando-o com a indentação já alinhada, quem revisa pode se concentrar na lógica em vez da apresentação. O diff também fica mais fácil de ler.
Incluir SQL numa especificação
Cole SQL formatado num documento e quem lê poderá acompanhar a estrutura. Junto com as maiúsculas, fica bom de ler mesmo impresso.
Analisar a forma de uma consulta lenta
Como você vê a profundidade das subconsultas e o número de junções, pode formular uma hipótese antes mesmo de ler o plano de execução.
Termos de SQL explicados
- Dialeto SQL
- As diferenças de sintaxe entre produtos de banco de dados. Cada produto acrescenta as suas próprias extensões ao SQL padrão — daí a importância da escolha ao formatar.
- Subconsulta
- Uma consulta escrita aninhada dentro de outra instrução SQL. Quanto mais fundo vai, mais difícil fica de ler, e é justamente aí que a indentação rende mais.
- JOIN
- A sintaxe que obtém dados ligando várias tabelas. As condições de junção tendem a ficar longas, então o lugar das quebras de linha governa a legibilidade.
- Instrução preparada
- Uma abordagem que monta a consulta inserindo os valores depois. É o alicerce de qualquer defesa contra injeção de SQL.
- Injeção de SQL
- Um ataque que mistura fragmentos de SQL nos valores informados para fazer executar uma consulta não pretendida. Montar SQL por concatenação de cadeias favorece isso.
- Procedimento armazenado
- Uma sequência de processamentos guardada do lado do banco de dados. Por conter sintaxe de controle, pode ficar fora do que a formatação abrange.
Perguntas frequentes
Curiosidade — 50 anos de SQL: história dos bancos de dados relacionais
O SQL surgiu quando a IBM desenvolveu o "SEQUEL" com base no modelo relacional proposto por E.F. Codd (IBM) em um artigo de 1970 (renomeado para SQL por questões de marca registrada). Foi padronizado pela ANSI em 1986 e tem sido usado em incontáveis bancos de dados desde então.
Um dos incidentes de segurança mais famosos é o ataque de injeção SQL. A violação do Sony PSN (PlayStation Network) em 2011 expôs mais de 100 milhões de registros pessoais, com danos estimados em US$ 171 milhões. Continua sendo presença constante no OWASP Top 10, e o uso de prepared statements é a contramedida fundamental.
"WHERE 1=1" é uma técnica prática para construir SQL dinâmico, mas também é um exemplo clássico de injeção SQL. A possibilidade de fazer login sem senha inserindo ' OR '1'='1 em um formulário de login ainda é usado como exemplo canônico em treinamentos de segurança.