Lição 7

Erros comuns de SQL

Evite cross joins acidentais, armadilhas de null, janelas de tempo erradas e suposições inseguras.

Erros de SQL costumam parecer pequenos no texto e grandes no comportamento em produção. Uma condição de join faltando, um limite de tempo errado ou um NULL inesperado pode mudar relatório, resposta de API ou migração.

Condições de join ausentes ou fracas

Se falta condição de join, o banco pode combinar muito mais linhas do que o pretendido. Mesmo com cláusula ON, confira se usa a chave certa e inclui limites de tenant ou conta quando o schema exige.

Comparações com NULL

NULL não é igual a valores ordinários. Use IS NULL ou IS NOT NULL:

WHERE deleted_at IS NULL

Não espere que deleted_at = NULL se comporte como comparação normal.

Janelas de tempo ambíguas

Filtros de tempo devem deixar claro se as bordas são inclusivas ou exclusivas:

WHERE created_at >= '2026-01-01'
  AND created_at < '2026-02-01'

Isso costuma ser mais seguro do que tentar incluir o último segundo do dia ou do mês.

SELECT * em caminhos de aplicação

SELECT * é útil enquanto explora, mas arriscado em código de aplicação. Pode buscar colunas desnecessárias, esconder dependência da forma do schema e dificultar revisões.

Conclusão

Formate a query, leia cláusula por cláusula e procure suposições pequenas: chaves de join, comportamento de null, faixas de tempo e colunas selecionadas.

O Formatador SQL ajuda a expor essas suposições antes de executar ou revisar a query.

Voltar à visão geral do curso