Questão nº 59
Questão de Banco de Dados · FGV BBTS 2023 (nº 59)
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.
- A0.
- B1. (alternativa correta)
- C50.
- D99.
- E100.
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 EXISTSserá verdadeira para a linha com o menor valor deA, então pelo menos uma linha será deletada (assumindo que a tabela não está vazia). - (B) Correta: O comando
DELETEirá remover as linhas da tabelaTpara as quais a condiçãoNOT 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 linhasttna tabelaTcujo valor deAseja menor que o valor deAda linhaTque está sendo avaliada.
Portanto, a condiçãoNOT EXISTSsignifica: "Delete a linhaTse não existir nenhuma outra linhattna tabelaTcujo valor deAseja menor que o valor deAda linhaT."
A única linha que satisfaz essa condição é a linha que possui o menor valor na colunaA. ComoAé 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.