📘 Semana 3 – Condicionais com WHERE e Operadores Lógicos

🔍 Tópico 1 - A cláusula WHERE

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:

  • Evitar alterações ou exclusões acidentais em todos os registros;
  • Melhorar a performance das consultas;
  • Garantir a precisão das respostas geradas pelo banco de dados.

📌 Exemplo 1 – Filtrar alunos maiores de idade:
SELECT * FROM alunos WHERE idade >= 18;
📌 Exemplo 2 – Atualizar o status de alunos inativos:
UPDATE alunos SET status = 'inativo' WHERE frequencia < 50;
📌 Exemplo 3 – Excluir alunos que não compareceram:
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.

⚠️ Cuidado: nunca use comandos UPDATE ou DELETE sem WHERE a não ser que deseje alterar ou excluir todos os registros da tabela.
⚖️ Tópico 2 - Operadores de Comparação

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.

📌 Principais operadores:
  • = – igual a um valor
  • <> ou != – diferente de um valor
  • > – maior que
  • < – menor que
  • >= – maior ou igual
  • <= – menor ou igual
  • BETWEEN ... AND – dentro de um intervalo
  • IN (...) – dentro de uma lista de valores
  • LIKE – correspondência de padrões (com % e _)

🔎 Exemplos práticos:

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%';

🎯 Boas práticas:
  • Utilize BETWEEN para facilitar comparações entre faixas numéricas ou datas;
  • Evite LIKE '%palavra%' em tabelas grandes, pois isso reduz a performance (sem índice);
  • Use IN quando tiver múltiplos valores possíveis e quiser evitar vários OR;
  • Use IS NULL ou IS NOT NULL para testar valores nulos (ausentes);
  • Combinar operadores com AND, OR e NOT torna sua consulta mais poderosa (ver próximo tópico).

💡 Dica: os operadores de comparação são a base da lógica condicional em SQL. Saber usá-los com precisão é essencial para consultas eficazes.
🔗 Tópico 3 - Operadores Lógicos

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.

📌 Principais operadores lógicos:
  • 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).

🔎 Exemplos práticos:

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';

🧠 Ordem de precedência:

O SQL avalia os operadores lógicos na seguinte ordem:

  1. NOT
  2. AND
  3. OR

Use 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');

✅ Boas práticas:
  • Use AND para condições que devem ser simultaneamente verdadeiras;
  • Use OR com cuidado – pode retornar mais resultados do que o esperado;
  • Sempre que possível, utilize parênteses para tornar a lógica mais clara e evitar ambiguidades;
  • Teste consultas complexas em partes antes de combiná-las.
⚠️ Atenção: muitos erros em SQL vêm da má interpretação dos operadores lógicos. Uma ordem de execução mal compreendida pode gerar resultados inesperados.
🧪 Tópico 4 - Exercícios Práticos

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:

📊 Estrutura da Tabela alunos:
  • id – inteiro, chave primária
  • nome – texto, nome completo do aluno
  • idade – inteiro, idade do aluno
  • curso – texto, curso técnico (ex: Informática, Logística)
  • cidade – texto, cidade de origem
  • status – texto, situação do aluno (ex: 'ativo', 'inativo')
  • frequencia – inteiro, percentual de presença nas aulas

Utilize essa estrutura para montar as consultas SQL a seguir. Você pode testar os comandos no editor SQL da disciplina.


📘 Exercício 1 – Alunos com mais de 18 anos:
SELECT * FROM alunos WHERE idade > 18;
📘 Exercício 2 – Alunos do curso de Informática que moram em Garanhuns:
SELECT * FROM alunos 
WHERE curso = 'Informática' AND cidade = 'Garanhuns';
📘 Exercício 3 – Alunos com idade entre 15 e 17:
SELECT * FROM alunos 
WHERE idade BETWEEN 15 AND 17;
📘 Exercício 4 – Alunos que não são do curso de Logística:
SELECT * FROM alunos 
WHERE curso <> 'Logística';
📘 Exercício 5 – Alunos das cidades “Garanhuns” ou “Caetés”:
SELECT * FROM alunos 
WHERE cidade IN ('Garanhuns', 'Caetés');
📘 Exercício 6 – Alunos com status 'ativo' e frequência maior que 80%:
SELECT * FROM alunos 
WHERE status = 'ativo' AND frequencia > 80;
📘 Exercício 7 – Alunos cujo nome começa com “J” e que são do curso de Informática:
SELECT * FROM alunos 
WHERE nome LIKE 'J%' AND curso = 'Informática';
📘 Exercício 8 – Alunos com frequência menor que 60% ou status 'inativo':
SELECT * FROM alunos 
WHERE frequencia < 60 OR status = 'inativo';

💡 Dica: Você pode adaptar os filtros para testar situações diferentes, como alunos ausentes, em risco de reprovação, ou que precisam de reforço escolar. Praticar com dados variados é essencial para dominar SQL.
🚀 Tópico 5 - Desafio Final

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, frequencia

🎓 Desafio 1 – Filtro combinado:

Liste 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';
📌 Explicação:

Essa consulta utiliza três condições combinadas com AND, representando um filtro mais específico e útil em cenários reais.


🎯 Desafio 2 – Uso de 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;

🧠 Desafio 3 – Nome e padrão:

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';

📘 Desafio 4 – Criando sua própria consulta:

Elabore uma consulta que combine pelo menos três condições, utilizando operadores como AND, OR ou NOT. Seja criativo! Você pode investigar:

  • Alunos em risco de reprovação (baixa frequência);
  • Alunos com idade crítica e curso específico;
  • Alunos de determinadas cidades com nomes que seguem um padrão;
  • Alunos com status “inativo” de um grupo de cursos específicos.
Compartilhe sua consulta com a turma! Você pode explicar o que ela busca, o que aprendeu e como chegou ao resultado.
📈 Tópico 6 - Casos de Uso e Aplicabilidades

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.

💼 Aplicações práticas por área:
  • Educação: identificar alunos com baixa frequência, notas abaixo da média, ou alunos de determinada turma e curso.
  • Comércio: listar produtos com estoque crítico, clientes inadimplentes, pedidos com atraso ou entregas agendadas para hoje.
  • Saúde: localizar pacientes com exames pendentes, agendamentos em determinada data ou com prioridade de atendimento.
  • Setor público: filtrar processos abertos por região, cidadãos com cadastro incompleto ou benefícios ativos/inativos.

📊 Exemplos reais de uso:
  • 🔎 SELECT * FROM alunos WHERE frequencia < 75 AND status = 'ativo';
    Retorna alunos em risco por baixa presença.
  • 🛒 SELECT * FROM produtos WHERE estoque <= 10;
    Usado para alertar sobre necessidade de reposição.
  • 📅 SELECT * FROM agendamentos WHERE data = CURRENT_DATE AND status = 'pendente';
    Mostra atendimentos previstos para hoje ainda não concluídos.
  • 📬 DELETE FROM tokens WHERE expira_em < CURRENT_TIMESTAMP;
    Remove acessos expirados automaticamente.

🧠 Conclusão:

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.

💡 Desenvolvedores, analistas e cientistas de dados usam WHERE todos os dias para construir sistemas mais inteligentes, eficientes e responsivos. Agora você também pode!