SQL com estilo


O tempo vai passando, e acabo me “convencendo” a escrever e ler melhor instruções na linguagem de consulta estruturada — sim a representação da sigla SQL para Structured Query Language.

Seja em projetos pessoais e profissionais, gosto muito de aprender e melhorar cada detalhe. Gosto mais ainda de compartilhar conhecimento. Isso é o que realmente nos conecta.

Imagine Blocos

Códigos são blocos com instruções. Trechos, instruções, scripts… no final tudo será convertido num linguição de bits por um computador. — Esse termo veio daqui 🎲. To aqui defendendo a experiencia do desenvolvedor, então a melhor coisa é oferecer um código limpo e de fácil manutenção.

-- Boas vindas a tortura visual
SeLeCt top 5 t.TeamName AS Time,t.League as Liga,t.Mundiais AS MUNDIAIS,t.Relegation as REBAIX,t.Coalesce(CAST(coUNT(tt.Id) AS varchar),'0') AS TotalTitulos,t.TeamName+' - '+t.League+' - '+cast(t.Mundiais As varchar)+'M - '+CAST(t.Relegation AS vaRchar)+'R' AS InfoCompleta FROM footballTeams t LEFT join titles tt ON tt.TeamId=t.Id where t.League='BR' group BY t.TeamName,t.League,t.Mundiais,t.Relegation order BY t.Mundiais DESC,t.Relegation asc
Uma tabela HTML sofrendo por aqui...
TimeLigaMUNDIAISREBAIXTotalTitulosInfoCompleta
São Paulo Futebol ClubeBR3012São Paulo Futebol Clube - BR - 3M - 0R
SantosBR0115Santos - BR - 0M - 1R
CorinthiansBR1110Corinthians - BR - 1M - 1R
PalmeirasBR0218Palmeiras - BR - 0M - 2R
VascoBR049Vasco - BR - 0M - 4R

Eu confesso, já escrevi muito código ruim e sem formatação. Repeti padrões, haviam limitações, pressões e o conhecimento de fácil acesso não era tão rápido como hoje em dia.

Aplicando estilo e padrão

Temos que começar de algum lugar. Quebre o problema em pedaços menores:

Deixa eu ver o código...
-- Analise com um editor como VS CODE ou com IA.
-- Aqui você já ganha com a identificação por cores
SeLeCt top 5 t.TeamName AS Time,t.League as Liga,t.Mundiais AS MUNDIAIS,t.Relegation as REBAIX,t.Coalesce(CAST(coUNT(tt.Id) AS varchar),'0') AS TotalTitulos,t.TeamName+' - '+t.League+' - '+cast(t.Mundiais As varchar)+'M - '+CAST(t.Relegation AS vaRchar)+'R' AS InfoCompleta FROM footballTeams t LEFT join titles tt ON tt.TeamId=t.Id where t.League='BR' group BY t.TeamName,t.League,t.Mundiais,t.Relegation order BY t.Mundiais DESC,t.Relegation asc

Aplicando o Vertical Styling ou Estilização Vertical, onde a cada inicio de comando, há uma quebra de linha.

Deixa eu ver o código...
-- Opa, consigo ver ali o nome das colunas
-- e qual é a tabela principal
SeLeCt top 5
t.TeamName AS Time,
t.League as Liga,
t.Mundiais AS MUNDIAIS,
t.Relegation as REBAIX,
t.Coalesce(CAST(coUNT(tt.Id) AS varchar),'0') AS TotalTitulos,
t.TeamName+' - '+t.League+' - '+cast(t.Mundiais As varchar)+'M - '+CAST(t.Relegation AS vaRchar)+'R' AS InfoCompleta
FROM
footballTeams t
LEFT join
titles tt ON tt.TeamId=t.Id
where t.League='BR'
group BY t.TeamName,t.League,t.Mundiais,t.Relegation
order BY t.Mundiais DESC,t.Relegation asc

Refatorando, buscando padronizar palavras chave e comandos em MAIÚSCULO. Colunas com a inicial em Maiúsculo.

Deixa eu ver o código...
-- A tortura já não funciona mais...
-- não tanto. 😄
SELECT TOP 5
Teams.TeamName AS "Time",
Teams.League AS Liga,
Teams.Mundiais AS Mundiais,
Teams.Relegation AS Relegation,
Teams.Coalesce(CAST(COUNT(ChampionshipTitles.Id) AS VARCHAR),'0') AS Titulos,
Teams.TeamName + ' - ' + Teams.League + ' - ' + CAST(Teams.Mundiais AS VARCHAR)+'M - '+CAST(Teams.Relegation AS VARCHAR)+'R' AS InfoCompleta
FROM
FootballTeams AS Teams
LEFT JOIN
Titles AS ChampionshipTitles ON ChampionshipTitles.TeamId = Teams.Id
WHERE
Teams.League = 'BR'
GROUP BY
Teams.TeamName,
Teams.League,
Teams.Mundiais,
Teams.Relegation
ORDER BY
Teams.Mundiais DESC,
Teams.Relegation ASC

Analisando com calma, limpando dados desnecessários da query, indentando e ajustando o nome das colunas na tabela.

Deixa eu ver o código...
-- ✅ Sensação de vitória
SELECT TOP 5
  Teams.TeamName AS [Time],
  Teams.League AS Liga,
  Teams.WorldChampionships AS Mundiais,
  COALESCE(COUNT(ChampionshipTitles.Id), 0) AS Conquistas,
  Teams.Relegation AS Quedas
FROM
  Teams
LEFT JOIN
  ChampionshipTitles ON ChampionshipTitles.TeamId = Teams.Id
WHERE
  Teams.League = 'BR'
GROUP BY
  Teams.TeamName,
  Teams.League,
  Teams.WorldChampionships,
  Teams.Relegation
ORDER BY
  Teams.WorldChampionships DESC,
  Teams.Relegation ASC

Pra finalizar, um ajuste mais elegante naquela primeira tabela HTML lá de cima (adicionei até um CSS extra 😃).

Deixa eu ver o a tabela HTML...
Time Liga Mundiais Conquistas Quedas
São Paulo BR 3 12 0
Corinthians BR 1 10 1
Santos BR 0 15 1
Palmeiras BR 0 18 2
Vasco BR 0 9 4

É isso, agora posso descansar em paz. Se você gostou desse post, pode conferir mais algumas aplicações no meu projeto pessoal de convenções sql.

Referências

Guia de estilos SQL
Guia de referência SQL
Minhas convenções para SQL

➡️ Mais artigos…