Questão nº 41
Questão de Tecnologia da Informação · FGV TJ-MS 2024 (nº 41)
João está escrevendo uma consulta que envolve várias tabelas e precisa garantir que todas as suas linhas sejam incluídas no resultado, mesmo que não haja correspondências entre elas.
Para tanto, João deverá utilizar o seguinte operador de junção:
- ALEFT JOIN;
- BINNER JOIN;
- CRIGHT JOIN;
- DCROSS JOIN;
- EFULL OUTER JOIN. (alternativa correta)
Resposta comentada
Gabarito Alternativa E
Uma junção (JOIN) em SQL combina linhas de duas ou mais tabelas. O tipo de junção define quais linhas serão incluídas no resultado, especialmente quando não há correspondência entre elas.
(A) Incorreta: O LEFT JOIN (ou LEFT OUTER JOIN) inclui todas as linhas da tabela da esquerda e apenas as linhas correspondentes da tabela da direita. Linhas da tabela da direita sem correspondência na esquerda não seriam incluídas.
(B) Incorreta: O INNER JOIN inclui apenas as linhas que possuem correspondência em ambas as tabelas, excluindo qualquer linha sem correspondência em um dos lados.
(C) Incorreta: O RIGHT JOIN (ou RIGHT OUTER JOIN) inclui todas as linhas da tabela da direita e apenas as linhas correspondentes da tabela da esquerda. Linhas da tabela da esquerda sem correspondência na direita não seriam incluídas.
(D) Incorreta: O CROSS JOIN retorna o produto cartesiano das tabelas (cada linha de uma com cada linha da outra), sem considerar correspondências, o que não atende ao requisito de incluir linhas "mesmo que não haja correspondências" no sentido de preservá-las com NULLs.
(E) Correta: O FULL OUTER JOIN inclui todas as linhas de ambas as tabelas, preenchendo com valores nulos (NULL) nas colunas da tabela onde não há correspondência. É a única junção que garante que todas as linhas de todas as tabelas envolvidas sejam incluídas no resultado, mesmo que não haja correspondências entre elas.
Fonte: FGV TJ-MS 2024 Técnico de Nível Superior - Analista de Banco de Dados (Caderno Tipo 1). Reproduzida para fins de estudo.