0Pricing
SQL Academy · Aula

Filtros WHERE: operadores de comparação e lógica

Filtre linhas com =, <>, , AND, OR, NOT e entenda a precedência dos operadores e o uso de parênteses.

Filtros WHERE: operadores de comparação e lógica é uma aula grátis de SQL Academy no CoddyKit. Esta é a aula 2 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de SQL Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de SQL Academy inclui 4 aulas no total.

O papel de WHERE

WHERE filtra linhas antes do agrupamento ou da agregação. Somente as linhas cujo predicado é TRUE são retornadas.

Operadores de comparação

As comparações padrão funcionam com todos os tipos comparáveis:

SELECT * FROM products WHERE price > 100;
SELECT * FROM products WHERE price >= 100;
SELECT * FROM products WHERE price < 50;
SELECT * FROM products WHERE price <= 50;
SELECT * FROM products WHERE category = 'books';
SELECT * FROM products WHERE category <> 'books';   -- != also works

AND, OR, NOT

Combine predicados com operadores lógicos:

-- Both true:
SELECT * FROM products
WHERE category = 'books' AND price < 50;

-- Either true:
SELECT * FROM products
WHERE category = 'books' OR category = 'music';

-- Negation:
SELECT * FROM products
WHERE NOT (category = 'books');

Precedência de operadores

Precedência (da maior para a menor): NOT → AND → OR. Sempre coloque predicados complexos entre parênteses para maior clareza:

-- Without parens — almost certainly wrong:
SELECT * FROM orders
WHERE status = 'open' OR status = 'pending' AND total > 100;
-- means:  status = open  OR  (status = pending AND total > 100)

-- With parens — clearer:
SELECT * FROM orders
WHERE (status = 'open' OR status = 'pending') AND total > 100;

IN e NOT IN

Uma forma abreviada de escrever vários OR:

SELECT * FROM users
WHERE country IN ('US', 'CA', 'GB', 'AU');

-- Equivalent to:
SELECT * FROM users
WHERE country = 'US' OR country = 'CA' OR country = 'GB' OR country = 'AU';

BETWEEN

Verificação de intervalo inclusivo:

SELECT * FROM orders
WHERE total BETWEEN 100 AND 500;

-- Equivalent to:  total >= 100 AND total <= 500

Filtros seguros para NULL

Comparações com NULL resultam em NULL (não em FALSE), e as linhas com NULL são descartadas por WHERE. Use IS NULL / IS NOT NULL explicitamente quando necessário:

-- Returns users where deleted_at is unknown:
SELECT * FROM users WHERE deleted_at IS NULL;

-- IS DISTINCT FROM treats NULL as a comparable value:
SELECT * FROM events WHERE status IS DISTINCT FROM 'closed';

Colunas BOOLEAN

Uma coluna BOOLEAN não precisa de comparação:

SELECT * FROM tasks WHERE done;       -- = TRUE
SELECT * FROM tasks WHERE NOT done;    -- = FALSE or NULL
SELECT * FROM tasks WHERE done IS NOT TRUE;  -- FALSE or NULL only

Correspondência de padrões com LIKE

% corresponde a qualquer sequência de caracteres, e _ corresponde exatamente a um caractere:

SELECT * FROM users WHERE email LIKE '%@gmail.com';
SELECT * FROM products WHERE sku LIKE 'A_-___';

-- Case-insensitive in PostgreSQL:
SELECT * FROM users WHERE email ILIKE '%@GMAIL.com';

Filtros e desempenho

As cláusulas WHERE são onde os índices mostram seu valor. Filtros de igualdade (=) e de intervalo (<, BETWEEN) em colunas indexadas transformam varreduras completas da tabela em buscas que levam milissegundos.

Ordem de avaliação

Logicamente, o banco de dados avalia nesta ordem: FROM → WHERE → GROUP BY → HAVING → SELECT → ORDER BY → LIMIT. Portanto, WHERE vê as linhas brutas; os aliases de coluna de SELECT ainda não foram definidos.

-- This fails — alias not visible in WHERE:
SELECT total * 0.9 AS discounted
FROM orders WHERE discounted > 100;     -- ERROR

-- Repeat the expression instead, or wrap in a subquery.

Recapitulação

WHERE é sua principal ferramenta para selecionar linhas.

  • Operadores padrão de comparação e lógicos
  • Coloque parênteses em combinações de AND/OR
  • Use IS NULL — nunca = NULL
  • WHERE em colunas indexadas é rápido

Verificação rápida

Qual predicado mantém apenas as linhas em que age é maior ou igual a 18 e country é US?

Perguntas Frequentes

A aula “Filtros WHERE: operadores de comparação e lógica” é grátis?

Sim — o texto completo de “Filtros WHERE: operadores de comparação e lógica” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de SQL Academy, atualize para CoddyKit PRO. O curso de SQL Academy inclui 4 aulas no total.

O que vou aprender em “Filtros WHERE: operadores de comparação e lógica”?

Filtre linhas com =, <>, , AND, OR, NOT e entenda a precedência dos operadores e o uso de parênteses. Você pratica SQL Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.

Preciso ter experiência prévia para começar SQL Academy?

Nenhuma experiência prévia é necessária. SQL Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 2 de 4.

Quanto tempo leva a aula “Filtros WHERE: operadores de comparação e lógica”?

A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.

Posso escrever e executar código nesta aula de SQL Academy?

Sim. Cada aula de SQL Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.

Todas as aulas deste curso

  1. Selecionando colunas e expressões
  2. Filtros WHERE: operadores de comparação e lógica
  3. ORDER BY com uma ou várias colunas
  4. LIMIT, OFFSET e noções básicas de paginação
← Voltar para SQL Academy