
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...
Time | Liga | MUNDIAIS | REBAIX | TotalTitulos | InfoCompleta |
---|---|---|---|---|---|
São Paulo Futebol Clube | BR | 3 | 0 | 12 | São Paulo Futebol Clube - BR - 3M - 0R |
Santos | BR | 0 | 1 | 15 | Santos - BR - 0M - 1R |
Corinthians | BR | 1 | 1 | 10 | Corinthians - BR - 1M - 1R |
Palmeiras | BR | 0 | 2 | 18 | Palmeiras - BR - 0M - 2R |
Vasco | BR | 0 | 4 | 9 | Vasco - 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