Analise o comando SQL mostrado a seguir juntamente com a in...
Analise o comando SQL mostrado a seguir juntamente com a instância da tabela C.
delete from C
where exists
(select * from C c1
where c1.a=C.a and c1.b=C.b)
a b
12 14
14 12
12 14
14 12
Assinale a opção que apresenta o número de registros na
instância da tabela C após a execução desse comando.
Gabarito comentado
Confira o gabarito comentado por um dos nossos professores
Gabarito: Letra A - zero registros.
O tema da questão envolve o entendimento do comando DELETE no SQL, especificamente quando combinado com a cláusula WHERE EXISTS. A cláusula EXISTS é utilizada para verificar a existência de alguma condição em uma subconsulta (subquery). Neste caso, o comando verifica se existem linhas dentro da própria tabela que satisfazem um critério específico, e se existirem, essas linhas serão deletadas.
A condição da subconsulta compara valores das colunas a
e b
de uma linha da tabela com valores das mesmas colunas de todas as linhas da tabela, incluindo ela mesma. Dada a natureza da condição c1.a = C.a AND c1.b = C.b
, que sempre encontrará pelo menos a própria linha na comparação, a cláusula EXISTS sempre retornará verdadeiro para todas as linhas da tabela.
Logo, todas as linhas satisfazem a condição, e o comando DELETE irá apagar todas as linhas da tabela C. Portanto, após a execução do comando, o número de registros na tabela C será zero, o que justifica a alternativa A como a correta.
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
Considerei essa questão mais de português do que de banco de dados.
O comando interno traz todos os dados que possuem em C e C1 (referencia para a mesma tabela).
Como traz todos os dados, a tabela C é toda deletada.
Após a execução, ficará vazia.
Clique para visualizar este comentário
Visualize os comentários desta questão clicando no botão abaixo