Alternativa A - Exibir os níveis para os quais há pelo menos um curso associado.
Esta questão aborda a lógica de consultas SQL, especificamente o uso de subconsultas correlacionadas via operador IN. Para entender a resposta, precisamos decompor a sentença SQL apresentada.
A consulta principal busca dados na tabela NIVEL, mas aplica um filtro restritivo através da cláusula WHERE. Esse filtro utiliza uma subconsulta para determinar quais registros devem ser retornados.
Análise Detalhada
Vamos analisar a estrutura da query passo a passo:
- Subconsulta:
(SELECT DISTINCT CODIGONIVEL FROM CURSO) - Esta parte extrai todos os códigos de nível (
CODIGONIVEL) que existem na tabela CURSO. - O uso de
DISTINCT garante que cada código apareça apenas uma vez, independentemente de quantos cursos existam para aquele nível. - Resultado lógico: Uma lista de IDs de níveis que possuem associação com cursos.
- Operador
IN: - A cláusula
WHERE CODIGONIVEL IN (...) filtra a tabela NIVEL. - Ela mantém apenas as linhas onde o valor de
CODIGONIVEL esteja presente na lista gerada pela subconsulta. - Isso equivale a perguntar: "Quais níveis têm pelo menos um registro correspondente na tabela de cursos?".
- Tabela Alvo:
- A cláusula
SELECT puxa colunas de NIVEL (CODIGONIVEL, DESCRICAO). Isso elimina qualquer opção que diga que a consulta retorna dados sobre cursos.
Análise das Alternativas
- (A) Correta. A consulta retorna os níveis que aparecem na subconsulta, ou seja, níveis que possuem ao menos um curso vinculado.
- (B) Incorreta. A consulta seleciona dados da tabela
NIVEL, não da tabela CURSO. - (C) Incorreta. Para encontrar níveis sem cursos, seria necessário usar
NOT IN ou verificar nulls em um LEFT JOIN. - (D) Incorreta. O operador
IN verifica existência (sim/não), não quantidade. Para exigir "mais de um", seria necessário agrupamento e HAVING COUNT(...) > 1. - (E) Incorreta. A consulta não faz junção (
JOIN) para trazer informações da tabela CURSO, apenas da tabela NIVEL.
Conclusão
A lógica da query é filtrar a tabela de níveis mantendo apenas aqueles que já foram citados na tabela de cursos. Portanto, ela exibe os níveis que possuem vínculo com cursos existentes no sistema.