Pular para o conteúdo principal

Questão de Banco de Dados — Consultas e Comandos em SQL — FUNDATEC 2025

Banco de DadosConsultas e Comandos em SQL
Código
qa699065
Banca
FUNDATEC
Órgão
PROCERGS
Ano
2025
Cargo
ANC ( )

Em um sistema Oracle 19c, existe a seguinte tabela:

 
Tabela Alunos 

IdAluno

NomeNotaFaltas
1Ana81
2Bruno73
3Carla92
............
 

Qual dos comandos SQL abaixo resulta em uma lista com o nome dos alunos com nota maior ou igual a 7 e com 2 ou menos faltas?

  1. ASELECT Nome FROM Alunos WHERE Nota >= 7 AND Faltas <= 2;
  2. BSELECT Nome, Nota, Faltas FROM Alunos WHERE Nota >= 7 AND Faltas <= 2;
  3. CSELECT * FROM Alunos WHERE Nota >= 7 AND Faltas <= 2;
  4. DSELECT Nome FROM Alunos WHERE Nota >= 7 ORDER BY Faltas;
  5. ESELECT Nome FROM Alunos WHERE Faltas <= 2 ORDER BY Nota;
Revelar gabarito e comentário

GabaritoA — SELECT Nome FROM Alunos WHERE Nota >= 7 AND Faltas <= 2;

Comentário gerado por IA. É um apoio ao estudo, ancorado em fontes, mas pode conter imprecisões — confira sempre na fonte oficial (lei, súmula, edital e gabarito da banca). Encontrou um erro? Use “Reportar”.

Consultas SQL: filtro com WHERE e projeção de colunas

Gabarito: letra A. O comando SELECT Nome FROM Alunos WHERE Nota >= 7 AND Faltas <= 2; é o único que atende exatamente ao pedido: retorna apenas a coluna Nome (projeção) e filtra as linhas com Nota >= 7 e Faltas <= 2 (seleção com AND). As demais alternativas ou projetam colunas extras, ou usam ORDER BY no lugar do filtro de faltas, ou simplesmente não filtram corretamente.

A cláusula WHERE é o coração da consulta: ela define as condições que cada linha deve satisfazer para aparecer no resultado. No SQL, a estrutura básica de uma consulta é SELECT colunas FROM tabela WHERE condição. O SELECT escolhe quais colunas aparecem (projeção), o FROM indica de onde vêm os dados, e o WHERE filtra quais linhas entram (seleção). Quando há mais de uma condição, usamos operadores lógicos como AND (todas as condições devem ser verdadeiras) e OR (pelo menos uma deve ser verdadeira).

No caso, o enunciado pede alunos com nota maior ou igual a 7 e 2 ou menos faltas. Em SQL, "maior ou igual" é >= e "2 ou menos" é <= 2. A combinação correta é WHERE Nota >= 7 AND Faltas <= 2. O ORDER BY, presente em algumas alternativas, serve apenas para ordenar o resultado, não para filtrar — é uma pegadinha clássica: o candidato confunde ordenação com filtro.

Vamos aplicar ao exemplo da tabela: Ana (Nota 8, Faltas 1) → passa (8 ≥ 7 e 1 ≤ 2); Bruno (Nota 7, Faltas 3) → não passa (3 > 2); Carla (Nota 9, Faltas 2) → passa (9 ≥ 7 e 2 ≤ 2). O resultado correto seria: Ana e Carla.

A pegadinha desta questão está em duas frentes: (1) a projeção — o enunciado pede apenas o nome, então SELECT * ou SELECT Nome, Nota, Faltas trazem colunas a mais, o que não invalida o filtro, mas não atende ao pedido literal; (2) o ORDER BY — as alternativas D e E usam ORDER BY para "resolver" o filtro de faltas, mas ordenação não filtra. Guarde a diferença: WHERE seleciona linhas, ORDER BY organiza as linhas já selecionadas.

  1. 1SELECT (projeção)
  2. 2FROM (origem)
  3. 3WHERE (filtro)
  4. 4ORDER BY (ordenação)
LEVEL · soulevel.com.br

Alternativa A — ✅ Correta ⟵ GABARITO

Esta é a resposta certa. O comando SELECT Nome FROM Alunos WHERE Nota >= 7 AND Faltas <= 2; faz exatamente o que o enunciado pede: projeta apenas a coluna Nome e filtra as linhas onde Nota é maior ou igual a 7 e Faltas é menor ou igual a 2. O operador AND garante que ambas as condições sejam verdadeiras simultaneamente. É a sintaxe canônica de uma consulta SQL com filtro composto.

Alternativa B — ❌ Incorreta

O filtro está correto (Nota >= 7 AND Faltas <= 2), mas a projeção inclui Nome, Nota, Faltas. O enunciado pede apenas o nome dos alunos. Embora o resultado contenha os alunos certos, ele traz colunas extras, o que não atende ao pedido literal. A banca testa se o candidato sabe diferenciar projeção (quais colunas) de seleção (quais linhas).

Alternativa C — ❌ Incorreta

O filtro está correto, mas SELECT * retorna todas as colunas da tabela (IdAluno, Nome, Nota, Faltas). O enunciado pede apenas o Nome. O * é um coringa que projeta todas as colunas — útil em algumas situações, mas aqui foge do que foi solicitado.

Alternativa D — ❌ Incorreta

O comando SELECT Nome FROM Alunos WHERE Nota >= 7 ORDER BY Faltas; filtra apenas por Nota >= 7, sem filtrar as faltas. O ORDER BY Faltas apenas ordena o resultado pela coluna Faltas, mas não exclui alunos com mais de 2 faltas. Bruno (Nota 7, Faltas 3) apareceria no resultado, o que contraria o enunciado. A pegadinha: ORDER BY não é filtro.

Alternativa E — ❌ Incorreta

O comando SELECT Nome FROM Alunos WHERE Faltas <= 2 ORDER BY Nota; filtra apenas por Faltas <= 2, sem filtrar a nota. O ORDER BY Nota apenas ordena, mas não exclui alunos com nota menor que 7. Um aluno com Nota 5 e Faltas 1 apareceria, o que contraria o enunciado. Novamente, a confusão entre WHERE (filtro) e ORDER BY (ordenação).

Gabarito: letra A — a única que combina projeção correta (Nome) e filtro completo (Nota >= 7 AND Faltas <= 2).

Link permanente: /questoes/qa699065