Questão nº 62

Questão de Banco de Dados · FGV CGU 2021 - Tarde (nº 62)

FGV2021Auditor Federal de Finanças e Controle - Área Tecnologia da InformaçãoBanco de Dados
Gabarito: Dver comentário ↓

Considere as tabelas cliente e visita, conforme as instâncias exibidas a seguir.

Figura da questão de Banco de Dados


Com relação às tabelas cliente e visita, descritas anteriormente, o comando SQL que deleta corretamente os clientes que nunca visitaram o site é:

Resposta comentada

Gabarito Alternativa D

Conceito-chave: NOT EXISTS e <> ALL são usados para encontrar registros que não têm correspondência em outra tabela. A pegadinha está em comparar a chave primária (codigo) com a chave estrangeira (v.codigo), que têm o mesmo nome, mas representam coisas diferentes: na tabela visita, codigo é o código do cliente que visitou, não um código próprio da visita.

  • (A) Incorreta: A sintaxe where v.codigo in cliente.codigo é inválida — falta parênteses em in (cliente.codigo), e mesmo corrigida, in verifica se o código da visita está na lista de códigos de cliente, o que é o oposto do desejado (deletaria quem visitou, não quem não visitou).
  • (B) Incorreta: v.codigo <> cliente.codigo compara cada visita com todos os clientes diferentes, e como NOT EXISTS exige que nenhuma linha atenda à condição, isso só deletaria clientes que não têm nenhuma visita de outro cliente — na prática, deletaria quase ninguém ou todos, dependendo dos dados, mas nunca o conjunto correto.
  • (C) Incorreta: codigo in (select codigo from visita) seleciona clientes que têm visita, exatamente o oposto do que se quer (deletaria quem visitou, não quem nunca visitou).
  • (D) Correta: codigo <> ALL (select codigo from visita) significa "o código do cliente é diferente de todos os códigos de visita", ou seja, o cliente não aparece em nenhuma visita — exatamente os clientes que nunca visitaram o site.
  • (E) Incorreta: count(*) > 0 com v.codigo <> cliente.codigo conta visitas de outros clientes, não do cliente atual; um cliente que nunca visitou teria contagem 0, mas um cliente que visitou também pode ter contagem 0 se só houver uma visita dele, então não identifica corretamente o conjunto.

Fonte: FGV CGU 2021 - Tarde Auditor Federal de Finanças e Controle - Área Tecnologia da Informação (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