Pular para o conteúdo principal

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

Banco de DadosSQL
Código
fg060286
Banca
FGV
Órgão
Banco do Brasil
Ano
2023
Nível
Superior
Cargo
Analista Tecnológico
Considere uma tabela T, com uma única coluna A, definida como uma chave primária, e o comando SQL a seguir.delete from Twhere 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.
  1. A0.
  2. B1.
  3. C50.
  4. D99.
  5. E100.
Revelar gabarito e comentário

GabaritoB — 1.

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

SQL: Subconsulta Correlacionada com NOT EXISTS e Chave Primária

Gabarito: letra B. Apenas uma linha será deletada: a linha com o menor valor na coluna A. O comando DELETE FROM T WHERE NOT EXISTS (SELECT * FROM T tt WHERE T.A > tt.A) deleta cada linha para a qual não existe nenhuma linha com valor menor. Como a coluna A é chave primária (valores únicos), apenas a linha de menor valor não possui nenhum valor menor; todas as demais possuem ao menos um valor menor (o próprio menor). Portanto, exatamente 1 linha é removida.

Análise da Subconsulta Correlacionada

A subconsulta (SELECT * FROM T tt WHERE T.A > tt.A) é correlacionada: para cada linha da tabela T (referenciada externamente), ela verifica se existe uma linha na própria tabela (apelidada de tt) cujo valor de tt.A seja menor que o valor da linha externa. Se existir pelo menos uma linha menor, o EXISTS retorna verdadeiro, e o NOT EXISTS retorna falso — a linha externa não é deletada. Se não existir nenhuma linha menor, NOT EXISTS é verdadeiro e a linha é deletada.

SE LIGUE NESSA!

O raciocínio independe da ordem dos dados. Como todos os valores são distintos (chave primária), sempre haverá um único valor mínimo.

Simulação Conceitual

Considere uma tabela com valores {10, 20, 30, …, 1000} (todos distintos).

  • Para o valor 10: não existe nenhum valor menor → deletado.

  • Para qualquer outro valor (ex.: 20): existe o valor 10 que é menor → não deletado.

Portanto, apenas a linha com o menor valor é deletada.

Conclusão

Como a tabela tem 100 linhas, e apenas o menor valor é deletado, o número de linhas removidas é 1.

Gabarito: letra B.

Link permanente: /questoes/fg060286