Questão de Banco de Dados — SQL — FGV 2021
- 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
- Azero;
- Bum;
- Cdois;
- Dtrês;
- Equatro.
GabaritoE — quatro.
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.
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