Considerando as tabela1 e tabela2 apresentadas, julgue o ite...

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

Imagem associada para resolução da questão


Considerando as tabela1 e tabela2 apresentadas, julgue o item que se segue, referentes a banco de dados.


Considere que o comando a seguir seja executado sem erro.

select campo from tabela2

where exists

(select campo from tabela1)

Nesse caso, o resultado será a tabela seguinte.  


Imagem associada para resolução da questão

Alternativas

Comentários

Veja os comentários dos nossos alunos

A cláusula EXISTS retorna VERDADEIRO, quando a sua subquery encontra, pelo menos, um resultado, a partir da condição estabelecida.

A condição é essa: (select campo from tabela1)

Percebe que ela sempre retornará um resultado? Então, o EXISTS será VERDADEIRO para todos os casos e a query select campo from tabela2 retornará a coluna inteira da tabela.

Ficando assim:

-----------

campo

-----------

5

-----------

5

-----------

7

-----------

8

-----------

8

-----------

9

-----------

GAB.: ERRADO

O "exists" pode causar muita confusão, pois a ideia por trás dele é testar uma condição (true/false) pra cada linha da query externa.

Nesse caso não é testado nada, pois o resultado da subquery (ou exists) sempre é true independente do conteúdo da tabela1 ou tabela2. Por isso que o resultado final do enunciado deveria ser a tabela2 completa. E dai o gabarito ERRADO.

Mas se eu fosse usar um join ou "where tabela1.campo = tabela2.campo" (dentro do exists) ele poderia dar um true ou false pra cada teste. E isso confunde também, pois o teste não usa toda a tabela da query externa, ele usa apenas 1 única row da tabela externa.

Então o que a banca quis saber do candidato é se ele conhece os dois tipos de EXISTS: aquele que sempre da só TRUE ou só FALSE (resultado tudo ou nada); e aquele EXISTS que pode mudar entre TRUE ou FALSE dependendo da LINHA testada da tabela externa.

Clique para visualizar este comentário

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