Questão nº 43

Questão de Tecnologia da Informação · FGV TJ-AP 2024 (nº 43)

FGV2024Analista Judiciário - TI - Banco de DadosTecnologia da Informação
Gabarito: Dver comentário ↓

Quando referenciadas, considere as tabelas relacionais Competidor e Disputa, cujas estruturas e instâncias são descritas abaixo. Todas as colunas são definidas como strings.
A tabela Disputa contém as disputas realizadas entre competidores que aparecem na tabela Competidor. Em cada disputa há dois competidores, um com camisa azul e outro com camisa verde.

Figura da questão de Tecnologia da Informação


Considerando as tabelas Competidor e Disputa, descritas anteriormente, analise o comando SQL a seguir.

select nome
from Competidor C
where not exists (select *
                  from Disputa D
    where D.azul = C.nome)
   or not exists (select *
                  from Disputa D
           where D.verde = C.nome)

A execução do comando acima produziria somente a lista completa dos competidores que:

Resposta comentada

Gabarito Alternativa D

O operador NOT EXISTS verifica a ausência de registros em uma subconsulta. Se a subconsulta não encontra nenhuma linha para uma determinada condição, NOT EXISTS retorna verdadeiro; caso contrário, retorna falso. A cláusula OR combina condições, resultando em verdadeiro se pelo menos uma das condições conectadas for verdadeira.

  • (A) Incorreta: A consulta seleciona competidores que não participaram com camisas das duas cores. Se um competidor participou com ambas as cores, ambas as condições NOT EXISTS seriam falsas, e FALSE OR FALSE resultaria em falso, não selecionando o competidor.
  • (B) Incorreta: Esta alternativa descreve apenas uma das condições que tornaria a cláusula OR verdadeira (not exists (select * from Disputa D where D.verde = C.nome)). A consulta também seleciona competidores que nunca participaram com camisa azul, ou mesmo aqueles que nunca participaram de disputa alguma.
  • (C) Incorreta: Similar à alternativa B, esta descreve apenas a outra condição que tornaria a cláusula OR verdadeira (not exists (select * from Disputa D where D.azul = C.nome)). A consulta é mais abrangente.
  • (D) Correta: A consulta seleciona competidores para os quais é verdade que (nunca jogaram de azul) OU (nunca jogaram de verde). Isso é logicamente equivalente a NOT (jogou de azul E jogou de verde). Ou seja, seleciona aqueles que não jogaram com as duas cores. Se um competidor participou, ele só jogou com uma cor (azul ou verde). Se ele nunca participou, a condição "nas disputas em que participaram" é vacuamente verdadeira, pois não há disputas onde ele participou para que a cor fosse diferente. Portanto, a consulta lista competidores que, se participaram, o fizeram sempre com a mesma cor, incluindo aqueles que nunca participaram.
  • (E) Incorreta: Embora a consulta selecione competidores que nunca participaram (pois para eles, ambas as condições NOT EXISTS seriam verdadeiras, resultando em TRUE OR TRUE), ela também seleciona aqueles que participaram, mas apenas com uma única cor (ex: só de azul, ou só de verde).

Fonte: FGV TJ-AP 2024 Analista Judiciário - TI - Banco de Dados (Caderno Tipo 1). Reproduzida para fins de estudo.

Continue estudando

Estudar é izi

Pratique milhares de questões como esta, de graça, com explicação e gamificação no Quizinho.

Estudar de graça no Quizinho