No contexto das tabelas T1 e T2 definidas acima, considere a...

Próximas questões
Com base no mesmo assunto
Q1069976 Banco de Dados

Na questão, considere as tabelas T1 e T2 exibidas a seguir com suas respectivas instâncias.


                                    T1                          T2

                                    a    b                       a       c

                                   10   A                      10      7

                                    11  B                      11      9

                                    12  C                      15   NULL

                                    14  D

No contexto das tabelas T1 e T2 definidas acima, considere a execução do comando SQL a seguir.


select t2 . *

from T2

where t2 . a not in

(select t1 . a from T1)


A partir da execução desse comando, o número de linhas que aparece, além da linha de títulos, é

Alternativas

Gabarito comentado

Confira o gabarito comentado por um dos nossos professores

A alternativa correta é a B - 1.

A questão aborda o conceito de subconsultas (subqueries) e a cláusula NOT IN em SQL. O comando SELECT é utilizado para realizar consultas em tabelas de um banco de dados, e a cláusula WHERE é utilizada para filtrar os resultados com base em uma condição específica. Neste caso específico, estamos interessados em contar o número de linhas da tabela T2 que possuem valores na coluna a que não existem na coluna a da tabela T1.

Para resolver essa questão, é importante entender o comportamento do NOT IN. Este operador é usado para excluir os registros que correspondem aos valores dentro do parênteses que segue a cláusula. A subconsulta (SELECT t1.a FROM T1) retorna os valores 10, 11, 12 e 14.

A condição especificada na cláusula WHERE é que queremos os registros de T2 cuja coluna a não contém nenhum desses valores retornados pela subconsulta. Se olharmos para os valores da coluna a em T2, vemos que temos 10, 11 e 15. Dos três, apenas 15 não aparece na lista da subconsulta, e como a linha correspondente a 15 em T2 é a única que satisfaz a condição, apenas uma linha será retornada na consulta.

Portanto, a execução desse comando resultará na exibição de apenas uma linha, e é por isso que a alternativa B está 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

A utilização do IN se da sempre que for uma comparações simples.

Gabarito B

Veja que a consulta mais externa irá retornar todos os atributos de t2 para aqueles registros em que o valor de a não aparece na lista composta por todos os valores de t1.a, dada a linha de código a seguir:

where t2.a not in (select t1.a from T1)

Assim, se o valor de t2.a existir também em t1.a, o registro de t2 não será retornado. Dadas essas condições, somente o terceiro registro de t2 é retornado, pois o único valor de T2.a que não está também em T1.a é 15.

Arthur Mendonça | Direção Concursos 22/04/2020 às 16:07

Veja que a consulta mais externa irá retornar todos os atributos de t2 para aqueles registros em que o valor de a não aparece na lista composta por todos os valores de t1.a, dada a linha de código a seguir:

where t2.a not in (select t1.a form T1)

Assim, se o valor de t2.a existir também em t1.a, o registro de t2 não será retornado. Dadas essas condições, somente o terceiro registro de t2 é retornado, pois o único valor de T2.a que não está também em T1.a é 15.

Fiquei bolado com esse select t2.* from t2

Até o presente momento eu só tinha visto select(*) from t2

Julguei que daria um erro, vi 0 na alternativa A e pensei ser o caso de uma pegadinha. Errei.

Clique para visualizar este comentário

Visualize os comentários desta questão clicando no botão abaixo