A instrução SELECT, por si só, retorna todas as linhas de uma tabela. No entanto, em cenários do mundo real, você geralmente precisa apenas de um subconjunto de dados que atenda a critérios específicos. É aqui que entra a cláusula WHERE.
A cláusula WHERE é usada para filtrar registros. Ela garante que apenas as linhas que satisfazem uma condição especificada sejam incluídas no conjunto de resultados.
SELECT coluna1, coluna2, ...
FROM nome_da_tabela
WHERE condicao;
A condição é uma expressão que avalia para verdadeiro (true), falso (false) ou desconhecido (unknown, se valores NULL estiverem envolvidos). Apenas as linhas onde a condição avalia como verdadeiro são retornadas.
O SQL fornece uma variedade de operadores para comparar valores na cláusula WHERE:
| Operador | Descrição | Exemplo |
|---|---|---|
= | Igual a | WHERE last_name = 'SMITH' |
<> ou != | Diferente de | WHERE store_id <> 1 |
> | Maior que | WHERE rental_rate > 2.99 |
< | Menor que | WHERE length < 60 |
>= | Maior ou igual a | WHERE replacement_cost >= 20.00 |
<= | Menor ou igual a | WHERE amount <= 5.00 |
Para encontrar filmes com uma taxa de aluguel de $4.99 na tabela film:
SELECT title, rental_rate, replacement_cost
FROM film
WHERE rental_rate = 4.99;
O SQL inclui operadores poderosos para intervalos, conjuntos e correspondência de padrões.
Filtra valores dentro de um determinado intervalo (inclusive).
-- Encontrar pagamentos entre $5.00 e $10.00
SELECT payment_id, amount, payment_date
FROM payment
WHERE amount BETWEEN 5.00 AND 10.00;
Corresponde a qualquer valor em uma lista especificada.
-- Encontrar clientes de lojas específicas
SELECT first_name, last_name, store_id
FROM customer
WHERE store_id IN (1, 2);
Pesquisa por um padrão especificado em uma coluna usando curingas:
% representa zero, um ou vários caracteres._ representa um único caractere.-- Encontrar filmes que começam com 'A'
SELECT title
FROM film
WHERE title LIKE 'A%';
-- Encontrar filmes onde a segunda letra é 'I'
SELECT title
FROM film
WHERE title LIKE '_I%';
Como aprendemos na lição sobre NULLs, você não pode usar = ou <> para verificar NULL. Você deve usar IS NULL ou IS NOT NULL.
-- Incorreto
-- WHERE return_date = NULL
-- Correto
SELECT rental_id, rental_date, return_date
FROM rental
WHERE return_date IS NULL;
Principais conclusões desta lição:
WHERE filtra as linhas antes que elas sejam retornadas ao conjunto de resultados.LIKE para correspondência de padrões e IN para correspondência com listas.= com NULL; use sempre IS NULL.Na próxima lição, exploraremos como combinar múltiplas condições para criar filtros ainda mais poderosos.