Em relação ao conceito de junção INNER JOIN, analise cada afirmativa abaixo e verifique se é verdadeira ou falsa. Após isso, selecione a única opção correta: I. Na junção interna do tipo INNER JOIN, serão exibidos os dados existentes nas 2 tabelas envolvidas na consulta, em que encontramos correspondência entre as colunas especificadas e que pode ser o relacionamento entre chave primária e chave estrangeira. II. Quando utilizamos INNER JOIN com a cláusula USING, é recomendado utilizar qualificadores para as colunas chave primária/estrangeira. III. No conceito de uso do INNER JOIN, o padrão SQL/99 ou superior utiliza a cláusula WHERE para realizar a junção entre as tabelas. Já no padrão anterior SQL/99, essa junção é feita na clausula FROM.
Questão
Em relação ao conceito de junção INNER JOIN, analise cada afirmativa abaixo e verifique se é verdadeira ou falsa. Após isso, selecione a única opção correta:
I. Na junção interna do tipo INNER JOIN, serão exibidos os dados existentes nas 2 tabelas envolvidas na consulta, em que encontramos correspondência entre as colunas especificadas e que pode ser o relacionamento entre chave primária e chave estrangeira.
II. Quando utilizamos INNER JOIN com a cláusula USING, é recomendado utilizar qualificadores para as colunas chave primária/estrangeira.
III. No conceito de uso do INNER JOIN, o padrão SQL/99 ou superior utiliza a cláusula WHERE para realizar a junção entre as tabelas. Já no padrão anterior SQL/99, essa junção é feita na clausula FROM.
Alternativas
A) Os itens I e II são verdadeiros e o item III é falso.
B) O item III é verdadeiro e os itens I e II são falsos.
C) Os itens I e III são verdadeiros e o item II é falso.
D) O item II é verdadeiro e os itens I e III são falsos.
E) O item I é verdadeiro e os itens II e III são falsos.
Explicação
Vamos julgar cada afirmativa sobre INNER JOIN.
I. (Verdadeira)
No INNER JOIN (junção interna), o resultado traz apenas as linhas que possuem correspondência nas duas tabelas conforme a condição de junção (normalmente colunas relacionadas, como PK (chave primária) de uma tabela com FK (chave estrangeira) de outra).
- Ex.: só aparecem registros em que
tabelaA.pk = tabelaB.fk(ou outra condição equivalente). Logo, a ideia da afirmativa está correta.
II. (Falsa)
Quando usamos INNER JOIN ... USING(coluna), a coluna listada em USING é uma coluna comum às duas tabelas e, no resultado, ela aparece uma única vez.
- Nessa forma, não é “recomendado utilizar qualificadores” (tipo
t1.colunaout2.coluna) para a coluna do USING, porque a referência fica “unificada” para aquela coluna (em muitos SGBDs, você nem consegue referenciart1.coluna/t2.colunadessa coluna doUSINGdiretamente noSELECTcomo se fossem distintas). - Qualificadores continuam sendo úteis para outras colunas com nomes iguais, mas a afirmativa fala especificamente das colunas PK/FK usadas no
USING, então ela está incorreta.
III. (Falsa)
A afirmativa inverte os padrões.
- Antes do SQL-99, era comum (padrão antigo) fazer junção na cláusula WHERE (estilo “junção implícita”):
FROM A, B WHERE A.id = B.id
- A partir do SQL-99, o padrão passou a enfatizar a sintaxe explícita de junção na cláusula FROM:
FROM A INNER JOIN B ON A.id = B.idLogo, dizer que SQL/99+ usa WHERE e que antes do SQL/99 usa FROM está errado.
Conclusão:
- I: verdadeira
- II: falsa
- III: falsa
Alternativa correta: (E).