WHERE e Operadores Lógicos
A cláusula WHERE é um dos elementos mais importantes de uma consulta SQL. Ela é usada para
filtrar os registros de uma tabela, retornando apenas aqueles que satisfazem a condição especificada. Em vez
de trabalhar com todos os dados da tabela, o WHERE permite que você consulte, atualize ou
exclua apenas um subconjunto de registros, com base em critérios lógicos.
Essa cláusula pode ser utilizada em comandos como:
SELECT – para exibir registros específicos;UPDATE – para alterar apenas os dados que atendem a uma condição;DELETE – para excluir registros específicos da tabela.
O uso adequado da cláusula WHERE é essencial para:
SELECT * FROM alunos WHERE idade >= 18;
UPDATE alunos SET status = 'inativo' WHERE frequencia < 50;
DELETE FROM alunos WHERE presencas = 0;
✅ O uso de WHERE também pode ser combinado com operadores de comparação (=,
<>, >, <) e operadores lógicos (AND,
OR, NOT), o que será aprofundado nos próximos tópicos.
UPDATE ou DELETE sem
WHERE a não ser que deseje alterar ou excluir todos os registros da tabela.
Os operadores de comparação são utilizados na cláusula WHERE para comparar os valores de uma
coluna com valores constantes, variáveis ou de outras colunas. Eles permitem que você selecione registros
com base em critérios como igualdade, diferença, faixas de valores ou padrões específicos.
= – igual a um valor<> ou != – diferente de um valor> – maior que< – menor que>= – maior ou igual<= – menor ou igualBETWEEN ... AND – dentro de um intervaloIN (...) – dentro de uma lista de valoresLIKE – correspondência de padrões (com % e _)1. Alunos com idade igual a 17:
SELECT * FROM alunos WHERE idade = 17;
2. Alunos que não têm 18 anos:
SELECT * FROM alunos WHERE idade <> 18;
3. Alunos com idade entre 15 e 17 anos (inclusive):
SELECT * FROM alunos WHERE idade BETWEEN 15 AND 17;
4. Alunos que moram em Garanhuns ou Lajedo:
SELECT * FROM alunos WHERE cidade IN ('Garanhuns', 'Lajedo');
5. Alunos com nomes que começam com a letra A:
SELECT * FROM alunos WHERE nome LIKE 'A%';
BETWEEN para facilitar comparações entre faixas numéricas ou datas;LIKE '%palavra%' em tabelas grandes, pois isso reduz a performance (sem índice);IN quando tiver múltiplos valores possíveis e quiser evitar vários OR;
IS NULL ou IS NOT NULL para testar valores nulos (ausentes);AND, OR e NOT torna sua consulta mais
poderosa (ver próximo tópico).
Os operadores lógicos em SQL são usados para combinar duas ou mais condições dentro da cláusula
WHERE. Eles são essenciais para consultas que exigem múltiplos critérios de seleção, oferecendo
maior controle e flexibilidade na filtragem dos dados.
AND – Retorna verdadeiro se todas as condições forem verdadeiras.OR – Retorna verdadeiro se pelo menos uma condição for verdadeira.NOT – Inverte o resultado lógico de uma condição (de verdadeiro para falso e vice-versa).
1. Alunos do curso de Logística com 16 anos ou mais:
SELECT * FROM alunos
WHERE curso = 'Logística' AND idade >= 16;
2. Alunos do curso de Administração ou que moram em Garanhuns:
SELECT * FROM alunos
WHERE curso = 'Administração' OR cidade = 'Garanhuns';
3. Alunos que não moram em Lajedo:
SELECT * FROM alunos
WHERE NOT cidade = 'Lajedo';
4. Alunos com idade entre 15 e 18 e do curso de Informática:
SELECT * FROM alunos
WHERE idade BETWEEN 15 AND 18 AND curso = 'Informática';
O SQL avalia os operadores lógicos na seguinte ordem:
NOTANDORUse parênteses () para agrupar condições e controlar a lógica de execução.
-- Exemplo com parênteses
SELECT * FROM alunos
WHERE cidade = 'Garanhuns' AND (idade < 18 OR curso = 'Informática');
AND para condições que devem ser simultaneamente verdadeiras;OR com cuidado – pode retornar mais resultados do que o esperado;
A seguir, você irá praticar comandos SELECT utilizando a cláusula WHERE com
operadores de comparação e operadores lógicos. Para isso, considere que temos a seguinte estrutura de tabela
chamada alunos:
alunos:id – inteiro, chave primárianome – texto, nome completo do alunoidade – inteiro, idade do alunocurso – texto, curso técnico (ex: Informática, Logística)cidade – texto, cidade de origemstatus – texto, situação do aluno (ex: 'ativo', 'inativo')frequencia – inteiro, percentual de presença nas aulasUtilize essa estrutura para montar as consultas SQL a seguir. Você pode testar os comandos no editor SQL da disciplina.
SELECT * FROM alunos WHERE idade > 18;
SELECT * FROM alunos
WHERE curso = 'Informática' AND cidade = 'Garanhuns';
SELECT * FROM alunos
WHERE idade BETWEEN 15 AND 17;
SELECT * FROM alunos
WHERE curso <> 'Logística';
SELECT * FROM alunos
WHERE cidade IN ('Garanhuns', 'Caetés');
SELECT * FROM alunos
WHERE status = 'ativo' AND frequencia > 80;
SELECT * FROM alunos
WHERE nome LIKE 'J%' AND curso = 'Informática';
SELECT * FROM alunos
WHERE frequencia < 60 OR status = 'inativo';
Chegou o momento de aplicar todos os conhecimentos adquiridos até aqui! Abaixo você encontrará desafios mais
completos que exigem o uso combinado da cláusula WHERE com operadores de comparação e lógicos.
Utilize a estrutura da tabela alunos apresentada anteriormente:
id, nome, idade, curso, cidade,
status, frequenciaListe todos os alunos com idade maior ou igual a 16 do curso de Informática e que não sejam da cidade de Garanhuns.
SELECT * FROM alunos
WHERE idade >= 16 AND curso = 'Informática' AND cidade <> 'Garanhuns';
Essa consulta utiliza três condições combinadas com AND, representando um filtro mais
específico e útil em cenários reais.
IN com AND:Encontre os alunos do curso de Logística ou Administração que têm frequência acima de 70%.
SELECT * FROM alunos
WHERE curso IN ('Logística', 'Administração') AND frequencia > 70;
Liste todos os alunos ativos cujo nome começa com a letra “M” e que tenham menos de 18 anos.
SELECT * FROM alunos
WHERE nome LIKE 'M%' AND idade < 18 AND status = 'ativo';
Elabore uma consulta que combine pelo menos três condições, utilizando operadores como
AND, OR ou NOT. Seja criativo! Você pode investigar:
A cláusula WHERE está presente em praticamente todos os sistemas que utilizam banco de dados.
Ela é fundamental para construir consultas precisas, seguras e otimizadas, seja em relatórios gerenciais,
interfaces de administração, sistemas de recomendação, filtros personalizados ou automação de processos.
SELECT * FROM alunos WHERE frequencia < 75 AND status = 'ativo';SELECT * FROM produtos WHERE estoque <= 10;SELECT * FROM agendamentos WHERE data = CURRENT_DATE AND status = 'pendente';DELETE FROM tokens WHERE expira_em < CURRENT_TIMESTAMP;
Dominar o uso da cláusula WHERE é essencial para o desenvolvimento de qualquer sistema que
dependa de decisões baseadas em dados.
Ela permite transformar grandes volumes de informação em respostas úteis, personalizadas e seguras para os
usuários finais.
WHERE todos os dias
para construir sistemas mais inteligentes, eficientes e responsivos. Agora você também pode!