-
Creio que seja um subselect ou subconsulta, o not exists é usado para subtrair um conjunto de dados de outro, ele encontra o primeiro resultado, validar e passar para o próximo registro.
No caso ele pede para deletar uma linha da tabela T2 onde o valor não consta na T1. Ele passa como parâmetro a T2 na T1.
Gabarito: D
-
Essa questão não é muito difícil. Veja que a ideia é remover todos aqueles registros para os quais a subquery fornecida não retorna nada. Para cada registro de T2, precisamos avaliar a seguinte expressão:
Então observe que, para um dado registro de T2, se houver algum registro de T1 em que o valor de a é igual ao valor de a em T2, a consulta irá retornar esse registro. Acontecendo isso, a expressão not exists retornará falso e o registro não será removido.
Então somente aqueles registros cujo valor de T2.a não existe em T1.a é que serão eliminados, no caso somente o terceiro registro, composto por {a = 15, b = NULL}.
-
A ideia é remover todos aqueles registros para os quais a subquery fornecida não retorna nada.
Para cada registro de T2, precisamos avaliar a seguinte expressão:
select * from T1 where t1.a = t2.a
Então observe que, para um dado registro de T2, se houver algum registro de T1 em que o valor de a é igual ao valor de a em T2, a consulta irá retornar esse registro.
Acontecendo isso, a expressão not exists retornará falso e o registro não será removido.
Então somente aqueles registros cujo valor de T2.a não existe em T1.a é que serão eliminados, no caso somente o terceiro registro, composto por {a = 15, b = NULL}.