← Voltar para os artigos

As 6 cláusulas que resolvem quase toda query

Por Fernando Nagao Douverny · 29 de junho de 2026 · 2 min de leitura

fundamentosiniciante

SQL tem dezenas de comandos. Mas se você olhar as queries que roda numa semana normal, quase todas são feitas das mesmas seis peças.

E elas sempre aparecem na mesma ordem. Isso é a melhor notícia do SQL: a estrutura é fixa.

O esqueleto

SELECT   cliente, SUM(valor) AS total
FROM     pedidos
WHERE    estado = 'SP'
GROUP BY cliente
HAVING   SUM(valor) > 1000
ORDER BY total DESC

Cada linha responde uma pergunta:

  1. SELECT — o que eu quero ver?
  2. FROM — de onde isso vem?
  3. WHERE — quais linhas entram?
  4. GROUP BY — junta por quê?
  5. HAVING — quais grupos ficam?
  6. ORDER BY — em que ordem eu leio?

Nenhuma delas pode trocar de lugar. Se você tentar pôr o WHERE depois do GROUP BY, o banco recusa a query antes mesmo de olhar os dados.

Nem toda query usa as seis

SELECT e FROM são obrigatórios. Os outros quatro são opcionais e entram conforme a pergunta pede:

  • Sem agrupamento? Some GROUP BY e HAVING.
  • Não precisa filtrar? Some WHERE.
  • Tanto faz a ordem? Some ORDER BY.

O que não acontece é aparecer fora de ordem. A estrutura é sempre esse esqueleto, com peças faltando.

O par que mais confunde

WHERE e HAVING fazem a mesma coisa — filtrar — em momentos diferentes:

  • WHERE filtra linhas, antes de agrupar.
  • HAVING filtra grupos, depois de agrupar.

Por isso SUM(valor) > 1000 só funciona no HAVING: antes do GROUP BY essa soma ainda não existe.

Pra lembrar

Quando travar numa query, volte para o esqueleto e preencha linha por linha, na ordem. Escreva primeiro de onde vem e o que fica, e só depois o que mostrar.

Seis cláusulas, sempre na mesma sequência. O resto do SQL é vocabulário — isso aqui é a gramática.