Pular para o conteúdo principal

Questão de Banco de Dados — Banco de Dados Relacionais — INSTITUTO AOCP 2025

Banco de DadosBanco de Dados Relacionais
Código
qg539618
Banca
INSTITUTO AOCP
Órgão
IF-MS
Ano
2025
Nível
Médio
Cargo
Técnico de Tecnologia da Informação
Considere um banco de dados que armazena informações sobre alunos, disciplinas e professores do IFMS e que foi solicitado ao técnico de tecnologia da informação uma consulta SQL (Structured Query Language) para retornar os nomes dos alunos que cursaram a disciplina de informática, ministrada por uma professora (sexo feminino), que possuem renda familiar acima de R$ 2.000 e residem a mais de 5 km do IFMS.Qual das alternativas a seguir apresenta a consulta correta para esse cenário?
  1. ASELECT a.nomeFROM Alunos aJOIN Disciplinas d IN a.id_disciplina = d.idJOIN Professores p IN d.id_professor = p.idWHERE d.nome = 'Informática'OR p.sexo = 'F'OR a.renda_familiar > 2000OR a.distancia_moradia > 5;
  2. BSELECT a.nomeFROM Alunos aJOIN Disciplinas d ON a.id_disciplina != d.idJOIN Professores p ON d.id_professor != p.idWHERE d.nome = 'Informática'AND p.sexo = 'F'AND a.renda_familiar < 2000AND a.distancia_moradia < 5;
  3. CSELECT a.nomeWHERE Alunos aJOIN Disciplinas d ON a.id_disciplina = d.idJOIN Professores p ON d.id_professor = p.idFROM d.nome = 'Informática'OR p.sexo = 'F'OR a.renda_familiar > 2000OR a.distancia_moradia > 5;
  4. DSELECT a.nomeFROM Alunos aJOIN Disciplinas d IN a.id_disciplina = d.idJOIN Professores p IN d.id_professor = p.idWHERE d.nome = 'Informática'AND a.renda_familiar < 2000AND a.distancia_moradia < 5;
  5. ESELECT a.nomeFROM Alunos aJOIN Disciplinas d ON a.id_disciplina = d.idJOIN Professores p ON d.id_professor = p.idWHERE d.nome = 'Informática'AND p.sexo = 'F'AND a.renda_familiar > 2000AND a.distancia_moradia > 5;
Revelar gabarito e comentário

GabaritoE — SELECT a.nome FROM Alunos a JOIN Disciplinas d ON a.id_disciplina = d.id JOIN Professores p ON d.id_professor = p.id WHERE d.nome = 'Informática' AND p.sexo = 'F' AND a.renda_familiar > 2000 AND a.distancia_moradia > 5;

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: junções e filtros combinados

Gabarito: letra E. A consulta correta usa JOIN ... ON para relacionar as tabelas e combina todos os filtros com AND, pois o enunciado exige que o aluno tenha cursado Informática e que a professora seja do sexo feminino e que a renda familiar seja superior a R$ 2.000 e que a distância da moradia seja maior que 5 km — todas as condições devem ser verdadeiras simultaneamente.

A questão testa dois pilares da linguagem SQL: a sintaxe correta de junção entre tabelas e a lógica booleana aplicada aos filtros. Vamos entender cada um.

Junções (JOIN) são usadas para combinar linhas de duas ou mais tabelas com base em uma condição de relacionamento. A sintaxe padrão é JOIN tabela ON condição, onde a condição normalmente compara chaves (ex.: a.id_disciplina = d.id). O ON é a cláusula que define essa condição — é ele que está correto nas alternativas. Já o IN não é usado para junções; ele serve para verificar se um valor está dentro de um conjunto de valores (ex.: WHERE id IN (1, 2, 3)). Portanto, qualquer alternativa que use JOIN ... IN está sintaticamente errada.

Filtros (WHERE) definem quais linhas serão retornadas. Quando o enunciado pede que todas as condições sejam atendidas, usamos o operador lógico AND. Se usássemos OR, bastaria que uma condição fosse verdadeira para a linha ser retornada, o que não atende ao requisito de que o aluno deve satisfazer todos os critérios simultaneamente.

Exemplo prático: imagine que o banco tenha um aluno que cursou Informática, mas cuja professora é do sexo masculino. Com AND, esse aluno não apareceria no resultado, pois a condição p.sexo = 'F' falha. Com OR, ele apareceria, pois a condição d.nome = 'Informática' é verdadeira — o que contraria o enunciado.

Distinção importante: o JOIN com ON é a forma correta de relacionar tabelas. O IN é usado em subconsultas ou para verificar pertinência a um conjunto, nunca como condição de junção. Além disso, a ordem das cláusulas é fixa: SELECTFROMJOINWHERE. Qualquer inversão (como WHERE antes de FROM) torna a consulta inválida.

Pegadinha da banca: as alternativas A, C e D usam OR em vez de AND, o que relaxa as condições e retorna alunos que atendem a apenas um dos critérios. A alternativa B inverte os operadores de comparação (!= em vez de =, < em vez de >) e usa AND com condições invertidas, retornando exatamente o oposto do pedido. A alternativa D omite o filtro do sexo da professora e inverte os operadores de renda e distância.

Guarde a fronteira entre AND e OR e entre ON e IN: é exatamente nela que as alternativas se dividem.

Alternativa A — ❌ Incorreta

Usa JOIN ... IN em vez de JOIN ... ON, o que é sintaticamente inválido. Além disso, combina os filtros com OR, o que retornaria alunos que atendem a apenas uma das condições, não a todas simultaneamente. O correto seria ON para as junções e AND para os filtros.

Alternativa B — ❌ Incorreta

Inverte os operadores de junção (!= em vez de =) e os filtros de renda e distância (< em vez de >). Isso retornaria alunos que não cursaram Informática, com professora do sexo masculino, renda abaixo de R$ 2.000 e moradia a menos de 5 km — exatamente o oposto do pedido.

Alternativa C — ❌ Incorreta

A ordem das cláusulas está errada: WHERE aparece antes de FROM, o que é inválido. Além disso, usa OR nos filtros, o que relaxa as condições. A sintaxe correta é SELECTFROMJOINWHERE.

Alternativa D — ❌ Incorreta

Usa JOIN ... IN (inválido) e omite o filtro do sexo da professora. Além disso, inverte os operadores de renda e distância (< em vez de >), retornando alunos com renda abaixo de R$ 2.000 e moradia a menos de 5 km.

Alternativa E — ✅ Correta ⟵ GABARITO

Usa JOIN ... ON para relacionar as tabelas corretamente e combina todos os filtros com AND, garantindo que o aluno tenha cursado Informática, com professora do sexo feminino, renda familiar acima de R$ 2.000 e moradia a mais de 5 km do IFMS. A sintaxe está correta e atende integralmente ao enunciado.

PEGA ESSA DICA!

Na hora da prova, identifique rapidamente: (1) se as junções usam ON (correto) ou IN (errado); (2) se os filtros usam AND (todas as condições) ou OR (qualquer condição); (3) se os operadores de comparação estão no sentido correto (> para "acima de", < para "abaixo de"). Esses três pontos eliminam as alternativas erradas de imediato.

Gabarito: letra E

Link permanente: /questoes/qg539618