Geral Múltipla Escolha

Pedro está analisando os dados da instituição e deseja identificar todos os níveis de ensino, incluindo aqueles que ainda não têm nenhum curso associado. A consulta que ele construiu abaixo realiza a tarefa desejada? Justifique. SELECT N.DESCRICAO, C.NOME FROM NIVEL N RIGHT JOIN CURSO C ON N.CODIGONIVEL = C.CODIGONIVEL

Pedro está analisando os dados da instituição e deseja identificar todos os níveis de ensino, incluindo aqueles que ainda não têm nenhum curso associado. A consulta que ele construiu abaixo realiza a tarefa desejada? Justifique.

SELECT N.DESCRICAO, C.NOME FROM NIVEL N RIGHT JOIN CURSO C ON N.CODIGONIVEL = C.CODIGONIVEL

  1. Sim, pois ela trará todos os níveis cadastrados, com ou sem cursos associados.
  2. Não, pois ela ignora os níveis que não estão associados a nenhum curso.
  3. Sim, pois a junção à direita garante que todos os níveis apareçam, mesmo sem cursos associados.
  4. Não, pois ela retornará apenas os cursos que possuem nível associado.
  5. Sim, porque retorna todos os cursos e níveis, mesmo quando não há associação.

Resolução completa

Explicação passo a passo

B
Alternativa B

Alternativa B

Introdução

A questão trata da lógica de junção de tabelas (JOIN) em SQL. O objetivo de Pedro é recuperar todos os níveis de ensino, garantindo que aqueles sem cursos também sejam listados.

Análise da Consulta SQL

A query apresentada é:

SELECT N.DESCRICAO, C.NOME
FROM NIVEL N RIGHT JOIN CURSO C
ON N.CODIGONIVEL = C.CODIGONIVEL

Para entender se ela funciona, precisamos analisar a direção da junção:

  • Tabela Esquerda: NIVEL (definida após o FROM)
  • Tabela Direita: CURSO (definida após o RIGHT JOIN)

O comando RIGHT JOIN tem a função de manter todos os registros da tabela da direita (CURSO) e apenas os registros correspondentes da tabela da esquerda (NIVEL).

Por que a alternativa B está correta?

Se um nível de ensino não possui nenhum curso associado, não haverá correspondência na tabela CURSO. Como o RIGHT JOIN prioriza a tabela da direita:

  • Todos os cursos aparecerão no resultado.
  • Apenas os níveis que possuem pelo menos um curso aparecerão.
  • Os níveis sem cursos serão ignorados.

Para atingir o objetivo de Pedro, a consulta deveria utilizar o LEFT JOIN, que garante a preservação de todos os registros da tabela da esquerda (NIVEL), preenchendo com NULL onde não houver cursos.

Resumo Comparativo

Comando SQLTabela Preservada (Inteira)Níveis sem Cursos
INNER JOINNenhuma❌ Não aparecem
RIGHT JOINDireita (Curso)❌ Não aparecem
LEFT JOINEsquerda (Nível)✅ Aparecem

Conclusão

A consulta não realiza a tarefa desejada porque a junção à direita protege a tabela de cursos, descartando os níveis que não possuem vínculo. Assim, a alternativa correta é a B.

Tem outra questão para resolver?

Resolver agora com IA

Mais questões de Geral

Ver mais Geral resolvidas

Tem outra questão de Geral?

Cole o enunciado, tire uma foto ou descreva o problema — a IA resolve com explicação completa em segundos.