SóProvas


ID
1504003
Banca
FGV
Órgão
TJ-BA
Ano
2015
Provas
Disciplina
Banco de Dados
Assuntos

Analise os comandos SQL a seguir, que produzem os resultados R1, R2 e R3, respectivamente.

I.
select distinct x.* from x, y where x.a < > y.a

II.
select distinct x.* from x
where x.a not in (select a from y)


III. select distinct x.* from x
where not exists
(select * from y where y.a=x.a)


Sabendo-se que nenhuma das instâncias das tabelas “x” e “y” é vazia, é correto concluir que:

Alternativas
Comentários
  • A diferença é que na opção 1 haverá um produto cartesiano entre x e y e logo depois usará o filtro where. Nas outras opções, não haverá esse produto cartesiano. Apenas comparações entre os valores existentes de x e y. Fiz um teste com os seguintes valores:

    mysql> select * from x;
    +------+
    | a  |
    +------+
    |  1 |
    |  2 |
    |  3 |
    +------+
    3 rows in set (0.00 sec)

    mysql> select * from y;
    +------+
    | a  |
    +------+
    |  2 |
    |  3 |
    |  4 |
    +------+
    3 rows in set (0.00 sec)

    mysql> select distinct x.* from x, y where x.a != y.a ; // <> é o mesmo que !=
    +------+
    | a  |
    +------+
    |  1 |
    |  3 |
    |  2 |
    +------+
    3 rows in set (0.00 sec)

    mysql> select distinct x.* from x
      -> where x.a not in (select a from y) ;
    +------+
    | a  |
    +------+
    |  1 |
    +------+
    1 row in set (0.00 sec)

    mysql>  select distinct x.* from x
      -> where not exists
      -> (select * from y where y.a=x.a) ;
    +------+
    | a  |
    +------+
    |  1 |
    +------+
    1 row in set (0.00 sec)

    mysql>


  • http://sqlfiddle.com/#!9/e5f081/4

  • I- seleciona todos registros distintos da tabela x usando como criterior a col a de x diferente da col a de y.

    II- seleciona todos registros distintos da tabela x usando como criterio col a de x nao presente na subconsulta que seleciona col a da tabela y.

    III- seleciona todos registros distintos da tabela x usando como criterio a nao existencia de registros da col a da tabela que sao iguais aos da col a da tabela x. resultado é mesmo de II