Quick reference

Escopo: SQL. Resumo das convenções para consulta de relance; a explicação de cada uma está em conventions/.

Nomenclatura

ObjetoConvençãoPadrãoExemplo
TabelasPascalCase pluralsem prefixoFootballTeams, Players, Orders
ColunasPascalCase singularsem prefixoSquadNumber, IsActive, CreatedAt
Stored ProcedureUPPER_SNAKESP_VERBO_TABELASP_GET_ORDERS_BY_ID
FunctionUPPER_SNAKEFN_VERBO_CONCEITOFN_CALCULATE_ORDER_TOTAL
IndexUPPER_SNAKEIX_TABELA_CAMPOIX_PLAYERS_TEAM_ID
ViewUPPER_SNAKEVW_DESCRICAOVW_ACTIVE_ORDERS
TriggerUPPER_SNAKETRG_TABELA_EVENTOTRG_ORDERS_ON_INSERT

Verbos de procedure

VerboIntençãoExemplo
GETBusca por identificador únicoSP_GET_ORDER_BY_ID
LISTColeção com filtrosSP_LIST_ORDERS_BY_CUSTOMER_ID
ADDInserçãoSP_ADD_ORDER, SP_ADD_PLAYER
UPDATEAtualizaçãoSP_UPDATE_ORDER_STATUS
DELETEExclusão (preferencialmente soft)SP_DELETE_ORDER_BY_ID

O que evitar

EvitarUsar
SELECT *colunas explícitas e necessárias
Aliases de letra (t, c, u)nome completo da tabela
AND / OR no início da linhaAND / OR ao final da linha
Função na coluna do WHERE (YEAR(date))intervalo direto (date >= '...')
Subquery correlacionada no SELECTCTE com agregação
ORDER BY ausenteORDER BY sempre declarado
UPDATE / DELETE sem WHEREWHERE obrigatório
Literais inline (Status = 2)parâmetros nomeados (@StatusId)
Número fixo sem contexto (StatusId = 2)comentário inline (StatusId = 2 -- Approved)

Constraints

PrefixoTipoPadrãoExemplo
PK_Primary KeyPK_TABELAPK_Players, PK_FootballTeams
FK_Foreign KeyFK_TABELA_REFERENCIAFK_Players_FootballTeams
UQ_UniqueUQ_TABELA_CAMPOUQ_Users_Email
CK_CheckCK_TABELA_CAMPOCK_Players_SquadNumber

Constraints sempre nomeadas com CONSTRAINT. FK sempre acompanhada de índice na coluna referenciadora.

Formato canônico de SELECT

SELECT
  FootballTeams.Name,
  Players.Name AS PlayerName
FROM
  FootballTeams
JOIN
  Players ON FootballTeams.Id = Players.TeamId
WHERE
  FootballTeams.IsActive = 1 AND
  FootballTeams.Country = 'Brazil'
ORDER BY
  FootballTeams.ChampionshipsWon DESC;

DoDocs v3.7.0 · Desenvolvido por @thiagocajadev · Baseado no trabalho de pmndrs/docs · Poimandres.