Voltar para a lista de artigos Artigos
8 minutos de leitura

24 Regras para o padrão de formatação SQL

Escrever consultas em um banco de dados requer conhecimento sobre a sintaxe SQL, mas isto não é tudo que você deve saber. As melhores práticas para escrever código SQL profissional exigem boa capacidade de formatação. Neste artigo discuto por que isto é tão importante e quais são as regras básicas que você deve seguir.

Por que vale a pena formatar o código SQL?

Os programadores SQL principiantes muitas vezes não prestam muita atenção à formatação de seu código. Se você acha que a formatação é algo que pode ser ignorado com segurança, olhe o código abaixo:

SELECT id, FirstName, LASTNAME,c.nAme FROM people p left JOIN cities AS c on c.id=p.cityid;

Esta consulta SQL acima foi escrita sem utilizar nenhuma regra de formatação. Agora compare isso com a consulta formatada abaixo, que é o mesmo código:

     SELECT p.PersonId,
            p.FirstName,
            p.LastName,
            c.Name
       FROM Person AS p 
  LEFT JOIN City AS c 
         ON p.CityId = c.CityId;

Você vê a diferença? Qual é mais legível? Qual consulta é mais fácil de entender?

É óbvio que a primeira consulta não é muito fácil de ler. Além disso, é também um problema fazer mudanças neste código rapidamente. Se você gostaria de comparar esta consulta com outra consulta semelhante, não seria uma tarefa fácil. A segunda consulta é completamente diferente, mesmo sendo exatamente o mesmo código - é fácil de ler, seria fácil corrigir o código, e seria simples de comparar com outros códigos bem formatados. A formatação adequada do código SQL ajuda os programadores a evitar erros.

OK, agora você entende porque a formatação do código SQL pode ser uma boa idéia. Agora é hora de aprender como fazer isso.

Como formatar o código SQL

Há diferentes maneiras de abordar a formatação do código. Alguns programadores SQL têm estilos e preferências individuais para a formatação de consultas SQL. Eles têm experiência em programação e seguem regras que são convenientes para eles. Isto não é ruim se você estiver trabalhando apenas em seus próprios projetos, mas e se você estiver trabalhando junto com outros colegas de trabalho? Trabalhar em equipe seria problemático se cada programador escrevesse código usando seu próprio estilo individual. O código representaria uma mistura de regras em um projeto. A solução seria estabelecer um conjunto de princípios para toda a equipe. Mas então e se o código tiver que ser lido ou corrigido por pessoas de fora da empresa? A melhor solução em geral é seguir o padrão de formatação SQL. Não há um documento oficial sobre isso, mas há alguns padrões e boas práticas geralmente acordados e escritos por especialistas em SQL. Além disso, há muitas ferramentas que ajudam a formatar o código SQL que se baseiam nesta norma. Neste guia discutimos regras comuns e populares que se baseiam nesta norma.

Nomeação de Objetos

Primeiro discuto regras gerais sobre a nomenclatura dos objetos do banco de dados. Estas são as regras mais comuns:

  • Evitar o nome de uma tabela/coluna no plural. É melhor usar employee ao invés de employees.
  • Se o nome da tabela ou coluna deve consistir em mais de uma palavra, use um sublinhado para conectá-los, por exemplo employee_city. Alguns profissionais preferem usar o chamado estilo CamelCase, por exemplo EmployeeCity. O estilo preferido é diferente para diferentes sistemas de bancos de dados relacionais.
  • Verifique se o nome ainda não é usado como uma palavra-chave em SQL.
  • Se o nome for o mesmo que uma palavra-chave SQL, inclua o nome dentro de aspas.
  • O nome de um objeto em um banco de dados para uma tabela ou uma coluna deve ser único e não muito longo. Evite caracteres especiais no nome como $, &, * , etc. (use apenas letras, números e sublinhados).
  • Use um sublinhado em um nome somente se necessário.
  • Não comece o nome com um sublinhado.
  • Use comentários somente se necessário.
  • Evite abreviações, mas, se você as usar, certifique-se de que serão entendidas.
  • Evite dar o mesmo nome tanto para uma tabela quanto para uma coluna.
  • Use as mesmas regras de nomenclatura para pseudônimos de colunas ou tabelas.
  • Inclua a palavra-chave AS para criar aliases, pois isso torna o código mais legível.
  • Para a coluna chave primária, evite o nome id. Uma boa idéia é combinar id com o nome de uma tabela, por exemplo: id_employee.

Alinhamento .

A maioria dos especialistas recomenda primeiro escrever palavras-chave em uma nova linha à esquerda e depois o resto do código à direita, desta forma:

SELECT p.PersonId,
       p.FirstName,
       p.LastName,
       c.Name
  FROM Person AS p 
  JOIN City AS c 
    ON p.CityId = c.CityId;

Indentação

O uso liberal de novas linhas pode realmente ajudar a legibilidade de uma consulta SQL. É uma boa idéia usar uma nova linha para cada consulta separada e usar uma nova linha para cada coluna separada após uma vírgula. Da mesma forma, é uma boa idéia usar espaços para cercar o operador igual, usar espaços antes ou depois de apóstrofes e usar um espaço depois de uma vírgula.

As seções abaixo apresentam mais detalhes sobre as boas práticas de indentação em diferentes tipos de consultas SQL.

Comentando

Evite escrever demasiados comentários no código. É claro que há casos em que os comentários são necessários, mas geralmente é melhor usar comentários de múltiplas linhas que são indicados por /* caracteres de abertura e */ fechamento. Recomenda-se escrever este tipo de comentário no início de uma nova linha, em vez de começar em uma linha com o código que é executado. O comentário deve ser escrito acima da linha de código SQL relevante, usando o mesmo recuo. Por exemplo, o comentário deve ser escrito acima da linha de código SQL relevante, usando o mesmo recuo:

SELECT p.PersonId,
       p.FirstName,
       p.LastName,
       /* Name column is the name of the city: */
       p.Name,
  FROM Person AS p 
 WHERE p.Name = 'New York';

No código SQL também é possível adicionar um comentário de linha. Este tipo de comentário é indicado por um hífen duplo (--) no início do texto do comentário. Todo o texto após estes caracteres é tratado como um comentário.

SELECT -- we have to delete this column p.PersonId,
       p.FirstName,
       p.LastName,
       p.Name
  FROM Person AS p;

Consultas SELECT

Neste tipo de consulta SELECT é a primeira palavra no comando. Se houver muitas colunas após SELECT, é melhor separá-las colocando cada uma em uma linha separada. Cada nova linha deve ser indentada. Certifique-se de colocar vírgulas no final da linha e não no início da linha.

SELECT p.PersonId,
       p.FirstName,  
       p.LastName,
       c.Name
  FROM Person AS p;

Para as palavras-chave FROM, WHERE, ORDER BY, HAVING, GROUP BY e , escreva cada uma em uma nova linha sem recuo.

SELECT p.PersonId,
       p.FirstName,
       p.LastName,
       p.Name,
  FROM Person AS p 
 WHERE p.Name = 'New York';

Se a declaração WHERE tiver mais de uma condição, separe cada condição por uma nova linha que seja recuada, e use uma nova linha recuada com os operadores condicionais AND ou OR dentro da declaração WHERE.

SELECT p.PersonId,
       p.FirstName,
       p.LastName,
       p.Name
  FROM Person AS p 
 WHERE p.Name = 'New York' 
    OR p.Name = 'Chicago';

Declarações Conjuntas

Se você juntar tabelas, utilize novas linhas para os operadores INNER JOIN, LEFT JOIN, etc. Para o operador ON, escreva uma nova linha indentada dentro da declaração JOIN. Se, entretanto, houver mais de uma condição, use uma nova linha recuada antes do operador condicional AND ou OR.

SELECT p.PersonId,
       p.FirstName,
       p.LastName,
       c.Name
  FROM Person AS p 
  JOIN City AS c 
    ON p.CityId = c.CityId;

Uma Consulta SQL Longa e Aninhada

Consultas longas às vezes contêm subconsultas. Nesta situação, a subconsulta deve estar em uma nova linha indentada.

Para a estrutura CASE colocar cada um WHEN e END em uma nova linha.

SELECT p.PersonId,
       p.FirstName,
       p.LastName,
       CASE 
         WHEN p.Age < 18 THEN 'below 18'
         WHEN p.Age >= 18 THEN '18 or more'
       END AS Age
  FROM Person AS p;

Outros Tipos de Consultas SQL

Existem regras semelhantes para consultas que modificam, inserem ou excluem dados.

Use o travessão para VALUES nas consultas de inserção:

INSERT INTO Car(id_car, name, year) VALUES
  (1, 'Audi', 2010) ; 

No caso de inserir mais linhas em uma consulta, escreva cada linha como uma nova linha com indentação:

INSERT INTO Car(id_car, name, year) VALUES
  (1, 'Audi', 2010) ,
  (2, 'Skoda', 2015) ; 

De maneira semelhante, em uma consulta UPDATE use SET e WHERE como em uma declaração SELECT, com uma nova linha sem recuo:

UPDATE Car
SET year = 2012
WHERE Name = 'Audi';

ou em uma consulta DELETE:

DELETE FROM Car
WHERE Name = 'Audi'; 

Como a má formatação do código SQL leva a problemas

Um exemplo de como a má formatação leva a problemas pode ser visto na consulta abaixo, na qual são colocadas vírgulas no início de cada linha:

SELECT /* we have to delete this column */ p.PersonId
     , p.FirstName
     , p.LastName
     , p.Name
  FROM Person AS p 
 WHERE p.Name = 'New York';

Isto pode fazer sentido no início, mas se você comentar a primeira coluna a fim de removê-la, então a consulta retornaria um erro.

Outro erro pode ocorrer se você não usar indentação e novas linhas. Por exemplo:

Select person.id_person, person.name, person.age, person.description, person.city from person  where person.age>20 and person.city = ( select name from city where id_city>20)

Neste código mal formatado, seria muito fácil por engano apagar a cláusula WHERE na subconsulta quando você pretendia apagar a cláusula WHERE na consulta principal.

Muitos problemas serão fáceis de encontrar se a consulta estiver devidamente formatada, especialmente em uma consulta longa com centenas de linhas de código.

Resumo

Ignorar o padrão de formatação SQL pode causar problemas significativos quando se está colaborando com outros programadores. A formatação adequada ajuda a facilitar a leitura de seu código SQL e ajuda a evitar erros ao fazer alterações em seu código. Neste artigo eu apresentei algumas das regras recomendadas por especialistas que o ajudam a escrever um código mais claro. Escrever um belo código SQL é um bom hábito de trabalho valorizado pelos empregadores. Seu código indica seu nível de profissionalismo e mostra que você adota uma abordagem moderna e séria ao trabalho. Aceite o desafio e torne-se um programador mais profissional!