SóProvas


ID
770119
Banca
CESPE / CEBRASPE
Órgão
Banco da Amazônia
Ano
2012
Provas
Disciplina
Banco de Dados
Assuntos

A respeito de SQL, julgue os itens subsequentes.

Em SQL, a contrapartida da operação de junção é obtida mediante o comando LEFT OUTER JOIN, a expressão mais complexa para operações de junção em SQL.

Alternativas
Comentários
  • LEFT OUTER JOIN já significa um JOIN, e o JOIN mais complexo para operações de junção em SQL seria o CROSS JOIN.
  • Negocio estranho esse de comando mais complexo..pq isso vai depender da extensao da consulta(consultas aninhadas, por exemplo); mas vamos a um pequeno resumo sobre JOINS.

    INNER JOIN: o resultado trará somente as linhas que sejam comum nas 2 tabelas, ligadas pelos campos das tabelas em questão na pesquisa.

    LEFT OUTER JOIN: o resultado trará todas os registros que estejam na tabela da esquerda do JOIN, ao menos 1 vez, mesmo que não tenham registros na tabela da direita do JOIN, ligadas à tabela da esquerda.

    RIGHT OUTER JOIN: o resultado trará todas os registros que estejam na tabela da direita do JOIN ao menos 1 vez, mesmo que não tenham registros na tabela da esquerda do JOIN ligadas à tabela da direita.

    Alem disso, como citado, alem do
    LEFT OUTER JOIN, ha tambem o RIGHT OUTER JOIN, q possui aplicação identica, so q invertido. Logo, um nao pode ser mais ou menos complexo q o outro. E a questao fala de comando mais complexo.






  • Muito bem elaborada essa questão:
     
    ### O primeiro JOIN é o mais simples (também conhecido como INNER JOIN) irá retornar apenas os elementoscorrespondentes entre as duas tabelas
     
     
    http://sqlfromhell.files.wordpress.com/2009/09/j1.png?w=645
     
    ---Exemplo de código:
     
    TABLE_A
      PK Value
    ---- ----------
       1 FOX
       2 COP
       3 TAXI
       6 WASHINGTON
       7 DELL
       5 ARIZONA
       4 LINCOLN
      10 LUCENT
     
    TABLE_B
      PK Value
    ---- ----------
       1 TROT
       2 CAR
       3 CAB
       6 MONUMENT
       7 PC
       8 MICROSOFT
       9 APPLE
      11 SCOTCH
    -- INNER JOIN
    SELECT A.PK AS A_PK, A.Value AS A_Value,
           B.Value AS B_Value, B.PK AS B_PK
    FROM Table_A A
    INNER JOIN Table_B B
    ON A.PK = B.PK
     
    A_PK A_Value    B_Value    B_PK
    ---- ---------- ---------- ----
       1 FOX        TROT          1
       2 COP        CAR           2
       3 TAXI       CAB           3
       6 WASHINGTON MONUMENT      6
       7 DELL       PC            7
     
    (5 row(s) affected)
     
     
    ###O segundo JOIN a qual a questão refere-se LEFT OUTER JOIN (ou apenas LEFT JOIN )  é um pouco mais complexo, pois além de retornar os valores que tem correspodentes nas duas tabelas, também irá retornar os demais valores da coluna a esquerda que não tem correspondente na da direita. 
     
    http://sqlfromhell.files.wordpress.com/2009/09/j2.png?w=645
     
    ---Exemplo de Código
     
    TABLE_A
      PK Value
    ---- ----------
       1 FOX
       2 COP
       3 TAXI
       6 WASHINGTON
       7 DELL
       5 ARIZONA
       4 LINCOLN
      10 LUCENT
     
    TABLE_B
      PK Value
    ---- ----------
       1 TROT
       2 CAR
       3 CAB
       6 MONUMENT
       7 PC
       8 MICROSOFT
       9 APPLE
      11 SCOTCH
    -- LEFT JOIN
    SELECT A.PK AS A_PK, A.Value AS A_Value,
    B.Value AS B_Value, B.PK AS B_PK
    FROM Table_A A
    LEFT JOIN Table_B B
    ON A.PK = B.PK
     
    A_PK A_Value    B_Value    B_PK
    ---- ---------- ---------- ----
       1 FOX        TROT          1
       2 COP        CAR           2
       3 TAXI       CAB           3
       4 LINCOLN    NULL       NULL
       5 ARIZONA    NULL       NULL
       6 WASHINGTON MONUMENT      6
       7 DELL       PC            7
      10 LUCENT     NULL       NULL
     
    (8 row(s) affected)
     
     
    O pulo do gato nessa questão foi justamente o elaborador trocar o conceito do mais SIMPLES para o mais COMPLEXO
  • O mais complexo é o FULL Outer Join que combina o left e o right. O cross join é o mais simples na minha visão, pois é somente o produto cartesiano simples, sem casamento de atributos, sendo equivalente ao From com as relações separas por virgulas 

  • A operação de junção, EM ÁLGEBRA RELACIONAL, é obtida em SQL com o comando INNER JOIN

  • http://stackoverflow.com/questions/3228871/sql-server-what-is-the-difference-between-cross-join-and-full-outer-join