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 worksAND, 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 <= 500Filtros 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 onlyCorrespondê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
- Selecionando colunas e expressões
- Filtros WHERE: operadores de comparação e lógica
- ORDER BY com uma ou várias colunas
- LIMIT, OFFSET e noções básicas de paginação