Considere uma tabela T, com uma única coluna A, definida com...
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 comentado
Confira o gabarito comentado por um dos nossos professores
Gabarito: B
Fundamento decisivo: O trecho decisivo é "delete from T where not exists (select * from T tt where T.A > tt.A)" com A definida como chave primária. Pela semântica de NOT EXISTS em subconsulta correlacionada, a linha externa só é excluída quando não há nenhum tt.A menor que o seu valor; como a chave primária garante unicidade, isso ocorre apenas para a menor linha da tabela.
- Em subconsulta correlacionada, leia a condição sempre do ponto de vista da linha externa atual.
- Em EXISTS/NOT EXISTS, primeiro descubra quando a subconsulta retorna pelo menos uma linha; só depois conclua o efeito do predicado externo.
- Se houver chave primária no atributo comparado, use a unicidade para definir se o resultado pode atingir uma ou mais linhas.
Clique para visualizar este gabarito
Visualize o gabarito desta questão clicando no botão abaixo
Comentários
Veja os comentários dos nossos alunos
Chave primária: a coluna não tem valores repetidos.
NOT EXISTS: retorna verdadeiro, quando a query (select * from T tt where T.A > tt.A) não retornar valor. Esse caso acontece somente com o número 1, pois ele é o único da tabela que não será maior que ninguém. A partir do número 2 por exemplo, já teremos um valor verdadeiro, pois 2 > 1.
Assim, apenas a 1 linha será deletada, a que corresponde ao número 1.
GAB.: LETRA 'B'
Acho que o examinador fica pensando assim: "Vou fazer uma questão com um comando que ninguém experiente e profissional nunca faria na vida, e vou lascar a cabeça de qualquer pessoa normal com algo que não faz sentido algum para um DBA".
o not exists procura a excecao do criterio. como dito, tratand de pk, so o 1 reg nao sera maior d q nenhum outro.
esse 1 registr é a excecao
No início fiquei confuso com as explicações do pessoal, afinal a chave primária também pode ser uma string.... Mas no final vai dar na mesma quando usar o critério de ordem crescente em string.
https://www.qconcursos.com/questoes-de-concursos/questoes/014175f0-f4
Como que a banca FGV tem entendimentos diferentes para questões com o mesmo conceito em concursos diferentes? Usando o mesmo embasamento do gabarito da questão acima, não deveria excluir nenhuma linha pois fere o princípio:
Uma subconsulta em uma instrução DELETE não pode recuperar dados da mesma tabela da qual dados devem ser excluídos.
Clique para visualizar este comentário
Visualize os comentários desta questão clicando no botão abaixo