Considere o seguinte banco de dados: Professor (Nome,

Considere o seguinte banco de dados: Professor (Nome, Código, I.D., Salário) Aluno (Nome,


publicidade
Considere o seguinte banco de dados:
Professor (Nome, Código, I.D., Salário) Aluno (Nome, Matrícula, Data-Nasc, Endereço) Disciplina (Nome, Código, Horas-Semanais) Leciona (Código-Prof, Código-Discip) Matriculado-em (Matrícula, Código-Discip, Nota)
Foram propostos os seguintes comandos em SQL para obter os dados do aluno (Tabela Aluno) que obteve a maior nota na disciplina de nome “Lógica”.
I. select * from aluno where matricula in (select matricula from matriculado_em where nota in (select MAX(nota)from matriculado_em where cod_disc in (select codigo from disciplina where nome = 'Lógica'))); II. select * from aluno where matricula in (select MAX(nota) from matriculado_em where cod_disc in (select codigo from disciplina where nome = 'Lógica')); III.select aluno.* from aluno, matriculado_em where aluno.matricula=matriculado_em.matricula and nota in (select MAX(nota)from matriculado_em where cod_disc in (select codigo from disciplina where nome = 'Lógica')); IV. select aluno.*, MAX(nota) from aluno, matriculado_em where cod_disc in (select codigo from disciplina where nome = 'Lógica')
Os comandos corretos são
Analisando...
publicidade

🚀 Desbloqueie a explicação completa

Veja comentários detalhados e resoluções exclusivas para entender o gabarito desta questão.

Criar conta grátis
  • Matheus Fernandes
    Matheus Fernandes EQUIPE
    22/10/2026 • 04:01
    Nesta questão, o foco está em consultas SQL visando encontrar o aluno que obteve a maior nota na disciplina "Lógica". Para isso, é preciso atentar aos comandos que corretamente associam as tabelas e isolam o aluno com a maior nota.

    O comando I usa subconsultas aninhadas para, primeiro, filtrar o código da disciplina 'Lógica', depois encontrar a maior nota nessa disciplina na tabela matriculado_em e, por fim, localizar os alunos com essa nota. A estrutura está correta.

    O comando II tenta pegar o máximo da nota, mas logo no início usa 'select * from aluno where matricula in (select MAX(nota) ...)', o que faz o IN comparar matrícula com nota máxima, o que não faz sentido e geraria erro ou resultado vazio. Portanto, II está errado.

    O comando III junta as tabelas aluno e matriculado_em pela matrícula e depois filtra a nota que está dentro da consulta do máximo para a disciplina 'Lógica' – muito parecido com o I. Essa consulta também está correta.

    Já o comando IV seleciona aluno.*, MAX(nota) ao mesmo tempo, sem usar GROUP BY, o que é incorreto em SQL padrão, causando erro. Além disso, não há filtro para garantir que a nota máxima corresponda ao aluno correto, podendo retornar linhas erradas.

    Assim, as respostas certas são os comandos I e III, ou seja, alternativa a).
publicidade
🍪

Utilizamos cookies e tecnologias semelhantes para aprimorar sua experiência de navegação. Política de Privacidade.