Considere que todos os candidatos que responderam questões tenham suas respostas registradas na tabela
candidato_questao. select c.num_inscr, c.nome from candidato c where not exists ( select 1 from candidato_questao cq where cq.num_cand = c.num_inscr );
A execução da consulta SQL especificada produz como resultado o número de inscrição e nome dos candidatos que responderam a
Aalguma questão.
Bexatamente uma questão.
Cnenhuma questão.
Dquestões corretas.
Etodas as questões.
Revelar gabarito e comentário▾
GabaritoC — nenhuma questão.
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”.
Consulta SQL com NOT EXISTS: candidatos sem respostas
Gabarito: letra C. A consulta retorna o número de inscrição e o nome dos candidatos que não possuem nenhum registro na tabela candidato_questao, ou seja, que não responderam a nenhuma questão. O operador NOT EXISTS nega a existência de qualquer linha correspondente na subconsulta, e a subconsulta correlacionada busca registros de candidato_questao cujo num_cand seja igual ao num_inscr do candidato da consulta externa.
A consulta SQL apresentada utiliza uma subconsulta correlacionada com o operador NOT EXISTS. Para entender o resultado, é essencial decompor a lógica:
Consulta externa: seleciona num_inscr e nome de cada candidato da tabela candidato (aliás c).
Subconsulta correlacionada: para cada candidato, executa SELECT 1 FROM candidato_questao cq WHERE cq.num_cand = c.num_inscr. Essa subconsulta retorna uma linha se existir pelo menos um registro em candidato_questao com num_cand igual ao num_inscr do candidato atual.
Operador NOT EXISTS: a condição WHERE NOT EXISTS (subconsulta) é verdadeira quando a subconsulta não retorna nenhuma linha. Ou seja, o candidato é incluído no resultado apenas se não existir nenhum registro de resposta para ele.
Portanto, a consulta devolve os candidatos que não responderam a nenhuma questão — exatamente o que a alternativa C afirma.
Para fixar, veja um exemplo prático. Suponha que a tabela candidato tenha:
num_inscr
nome
1
Ana
2
Bruno
3
Carla
E a tabela candidato_questao tenha:
num_cand
id_quest
opcao_mar
1
10
A
1
11
B
3
10
C
A consulta retornará apenas o candidato 2 (Bruno), pois não há nenhum registro em candidato_questao com num_cand = 2. Ana (1) e Carla (3) têm respostas registradas, então NOT EXISTS é falso para elas.
A pegadinha da questão está em confundir NOT EXISTS com EXISTS. Enquanto EXISTS retorna verdadeiro se a subconsulta tiver pelo menos uma linha, NOT EXISTS retorna verdadeiro se a subconsulta não tiver nenhuma linha. A banca explora exatamente essa inversão lógica.
NÃO CAIA NESSA!
A banca troca o sentido do operador: NOT EXISTS é o oposto de EXISTS. Muitos candidatos leem a consulta como se ela buscasse quem respondeu alguma questão (alternativa A), mas o NOT nega a existência. Lembre-se: NOT EXISTS = não existe registro correspondente.
Alternativa A — ❌ Incorreta
Afirma que a consulta retorna candidatos que responderam alguma questão. Isso seria o resultado de EXISTS (sem o NOT), não de NOT EXISTS. A consulta usa NOT EXISTS, que nega a existência de respostas, portanto retorna quem não respondeu nenhuma.
Alternativa B — ❌ Incorreta
Afirma que retorna candidatos que responderam exatamente uma questão. A consulta não faz nenhuma contagem de respostas; ela apenas verifica a existência de pelo menos um registro. Não há condição que limite a quantidade de respostas a uma.
Alternativa C — ✅ Correta ⟵ GABARITO
A consulta retorna candidatos que não responderam a nenhuma questão. O NOT EXISTS com a subconsulta correlacionada seleciona apenas os candidatos sem nenhum registro em candidato_questao, como demonstrado no exemplo.
Alternativa D — ❌ Incorreta
Afirma que retorna candidatos que responderam questões corretas. A consulta não verifica se a opção marcada (opcao_mar) coincide com o gabarito da questão (gabarito). Não há junção com a tabela questao nem comparação de valores. A consulta apenas verifica a existência de qualquer resposta, independentemente de estar correta.
Alternativa E — ❌ Incorreta
Afirma que retorna candidatos que responderam todas as questões. A consulta não compara a quantidade de respostas com o total de questões existentes. Não há COUNT, GROUP BY ou HAVING para verificar se o candidato respondeu todas. A lógica de NOT EXISTS apenas identifica quem não tem nenhuma resposta.
Gabarito: letra C — a consulta retorna os candidatos que não responderam a nenhuma questão.