SóProvas


ID
2699632
Banca
FGV
Órgão
Banestes
Ano
2018
Provas
Disciplina
Banco de Dados
Assuntos

Considere um banco de dados com duas tabelas, R e S, contendo 4 e 3 registros, respectivamente. Em R, os valores da coluna A são 1, 2, 5 e 7. Em S, os valores da coluna B são 2, 4 e 7.


Excetuando-se a linha de títulos, o número de linhas no resultado do comando SQL


select * from R full outer join S on A=B


é:

Alternativas
Comentários
  • Full outer Join, ou só full join (tanto faz) é a combinação do LEFT e RIGHT join. Ele vai trazer TODOS os registros, das duas tabelas, mesmo que não haja correspondência entre elas. Ou seja: 5 linhas

     

    R            S

     

    A           B

    1 ------     NULL
    2 ------     2
    5 ------     NULL
    7 ------     7
    NULL ------ 4

  • fiddle: http://sqlfiddle.com/#!4/fc8af/3/0

  • A consulta faz um FULL OUTER JOIN, o que signfica que serão retornados os registros da tabela da esquerda, os da direita e aqueles que têm correspondência entre as duas. O resultado fica assim:

    Note que quando há correspondência, os registros de ambas as tabelas ficam associados um ao outro. Já quando não há, os registros da outra tabela são apresentados com valores NULL em seus atributos. No total, há cinco registros no resultado.

  • O full outer join retorna todos os registros de ambas as tabelas, trazendo aqueles que possuem relação na mesma linha e preenchendo-se com NULL naqueles que não possuem relação. Sendo assim, dadas as tabelas e fazendo-se as devidas associações, teremos:

    R S

    ======

    1 NULL

    2 2

    NULL 4

    5 NULL

    7 7

    Logo, teremos 5 linhas no resultado.

  • O FULL OUTER JOIN retorna todos os registros quando há uma correspondência da tabela esquerda com a direita ou da direita com a esquerda. Na tabela da esquerda, temos {1, 2, 5, 7}; e na tabela da direita, temos {2, 4, 7}. Como essa cláusula retorna todos os elementos, ele retornará {1, 2, 4, 5, 7}. Logo, temos cinco linhas no resultado.

    1. Conte as tuplas que são comuns a ambas;
    2. Some o total de registros de ambas as tabelas;
    3. Diminua o somatório anterior do total de tuplas comuns a ambas as tabelas;

    n(R) = 4;

    n(S) = 3;

    n(R intersect S) = 2;

    Resultado = 4 + 3 - 2 = 5;