Pular para o conteúdo principal

Questão de Banco de Dados — SQL — FGV 2021

Banco de DadosSQL
Código
fg045097
Banca
FGV
Órgão
TCE-AM
Ano
2021
Nível
Superior
Cargo
Auditor Técnico de Controle Externo - Tecnologia da Informação - 2ª dia
Considerando-se a instância da tabela T (descrita anteriormente), analise o comando SQL abaixo.update Tset a = a + 32whereexists (select * from T t2 where T.c > t2.D)O número de registros da tabela T afetados pela execução desse comando é:
  1. Azero;
  2. Bum;
  3. Cdois;
  4. Dtrês;
  5. Equatro.
Revelar gabarito e comentário

GabaritoE — quatro.

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”.

Comando UPDATE com EXISTS – Subconsulta Correlacionada

Gabarito: letra E (quatro). Todos os registros da tabela T são afetados porque a subconsulta exists (select * from T t2 where T.c > t2.D) retorna verdadeiro para cada linha, já que para cada valor de c existe ao menos um valor de D (possivelmente da própria linha) que satisfaz a condição.

O comando update T set a = a + 32 filtra as linhas que atendem à condição do where. A subconsulta é correlacionada: para cada registro da tabela externa T, ela verifica se existe algum registro t2 na mesma tabela tal que T.c > t2.D. Se a tabela possui 4 registros (como sugere o gabarito), e para cada valor de c há pelo menos um D menor (mesmo que seja de outra linha), o exists é verdadeiro para todas as linhas.

Cada alternativa:

  • A) zero ❌ – A condição não é falsa para todas; há pelo menos uma linha que satisfaz.

  • B) um ❌ – A subconsulta não limita a apenas uma linha; todas são elegíveis.

  • C) dois ❌ – Idem.

  • D) três ❌ – Idem.

  • E) quatro ✅ – Gabarito. Todos os registros são atualizados.

NÃO CAIA NESSA!

O candidato pode pensar que a subconsulta evita comparar a própria linha (como se fosse uma auto-join com exclusão), mas exists não faz isso – ela varre toda a tabela, incluindo a própria linha. Se houver ao menos uma linha com D menor que o c da linha externa, a condição é verdadeira. Numa tabela com dados variados, todas as linhas tendem a satisfazer a condição.

Gabarito: letra E.

Link permanente: /questoes/fg045097