Questão nº 59

Questão de Banco de Dados · FGV BBTS 2023 (nº 59)

FGV2023Analista - Perfil TecnológicoBanco de Dados
Gabarito: Bver comentário ↓

Considere uma tabela T, com uma única coluna A, definida como uma chave primária, e o comando SQL a seguir.

```sql
delete from T
where not exists
(select * from T tt where T.A > tt.A)
```

Dado que a tabela tem 100 linhas preenchidas, assinale a opção que indica o número de linhas que será deletado pela execução do referido comando.

Resposta comentada

Gabarito Alternativa B

NOT EXISTS é uma condição em SQL que verifica se nenhuma linha satisfaz a subconsulta. Se a subconsulta não retornar nenhuma linha, a condição NOT EXISTS é avaliada como verdadeira.

  • (A) Incorreta: A condição NOT EXISTS será verdadeira para a linha com o menor valor de A, então pelo menos uma linha será deletada (assumindo que a tabela não está vazia).
  • (B) Correta: O comando DELETE irá remover as linhas da tabela T para as quais a condição NOT EXISTS (select * from T tt where T.A > tt.A) for verdadeira. Analisando a subconsulta: (select * from T tt where T.A > tt.A) busca por linhas tt na tabela T cujo valor de A seja menor que o valor de A da linha T que está sendo avaliada.
    Portanto, a condição NOT EXISTS significa: "Delete a linha T se não existir nenhuma outra linha tt na tabela T cujo valor de A seja menor que o valor de A da linha T."
    A única linha que satisfaz essa condição é a linha que possui o menor valor na coluna A. Como A é uma chave primária, todos os valores são únicos, garantindo que há apenas uma linha com o menor valor absoluto. Assim, apenas essa uma linha será deletada.
  • (C) Incorreta: Não há lógica na condição que resultaria na exclusão de metade das linhas. A condição aponta especificamente para o valor mínimo.
  • (D) Incorreta: Esta alternativa seria tentadora se a condição fosse para deletar todas as linhas exceto a maior, ou se houvesse alguma outra lógica de "quase tudo". No entanto, a condição NOT EXISTS (T.A > tt.A) isola apenas o menor valor.
  • (E) Incorreta: Para que todas as 100 linhas fossem deletadas, cada linha teria que satisfazer a condição de não ter nenhum valor menor que o seu próprio, o que é impossível em uma tabela com múltiplos valores distintos.

Fonte: FGV BBTS 2023 Analista - Perfil Tecnológico (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