← Questões de Banco de Dados

Banco de Dados · FGV · 2023

Questão comentada de Banco de Dados

Considere uma tabela T, com uma única coluna A, definida como uma chave primária, e o comando SQL a seguir. 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.

Gabarito: B

Aqui a ideia é olhar com calma para a subquery correlacionada. Para cada linha de T, o comando pergunta: existe alguma outra linha tt com valor de A menor do que o da linha atual? Se a resposta for "não", essa linha entra no DELETE. Traduzindo para português claro: o comando apaga a menor chave primária da tabela, isto é, a linha de menor valor em A. Como A é chave primária, não há repetição, então existe exatamente uma linha mínima. Com 100 linhas preenchidas, o comando deletará 1 linha. É por isso que o gabarito é a letra B. Em SQL, esse tipo de raciocínio com EXISTS e NOT EXISTS costuma ser cobrado para testar se voce enxerga a lógica do filtro, e não apenas a sintaxe.

Continue treinando

Questões relacionadas