FC ConcursosFC Concursos

Questão FC546278

Em um sistema de gerenciamento de banco de dados relacional compatível com SQL ANSI, você precisa selecionar dados de duas tabelas relacionadas: clientes (com colunas id_cliente, n

Linguagem SQL

FURB · 2025

Em um sistema de gerenciamento de banco de dados relacional compatível com SQL ANSI, você precisa selecionar dados de duas tabelas relacionadas: clientes (com colunas id_cliente, nome) e pedidos (com colunas id_pedido, id_cliente, data_pedido). O objetivo é obter uma lista completa de todos os clientes e todos os pedidos, mesmo que um cliente não tenha feito nenhum pedido ou que um pedido não esteja associado a um cliente existente (o que pode ocorrer devido a inconsistências nos dados). Para cada cliente, devem ser exibidos os pedidos associados (se houver), e para cada pedido, o cliente correspondente (se houver). Onde não houver correspondência, as colunas da tabela ausente devem exibir o valor NULL. Assinale a alternativa que atende corretamente o requisito descrito:  

  1. A cláusula INNER JOIN retornaria apenas os clientes que possuem pedidos e os pedidos que estão associados a um cliente, excluindo clientes sem pedidos e pedidos sem cliente correspondente.
  2. A cláusula RIGHT JOIN, ao unir clientes à esquerda e pedidos à direita, retornaria todos os pedidos e os clientes correspondentes (se houver), com valores NULL nas colunas de clientes, para pedidos sem cliente correspondente.
  3. A cláusula LEFT JOIN, ao unir clientes à esquerda e pedidos à direita, retornaria todos os clientes e os pedidos correspondentes (se houver), com valores NULL nas colunas de pedidos, para clientes sem pedidos.
  4. A cláusula FULL OUTER JOIN retornaria todas as linhas de ambas as tabelas (clientes e pedidos). Para os clientes sem pedidos, as colunas de pedidos seriam NULL. Para os pedidos sem cliente correspondente, as colunas de clientes seriam NULL.
  5. A cláusula JOIN, ao unir clientes à esquerda e pedidos à direita, retornaria todos os pedidos e os clientes correspondentes (se houver), com valores NULL nas colunas de clientes, para pedidos sem cliente correspondente.
Mostrar resposta e comentário

Gabarito

D

Comentário do professor

A opção correta usa FULL OUTER JOIN porque essa cláusula retorna todas as linhas de ambas as tabelas, combinando quando há correspondência e mantendo as linhas isoladas quando não há. Assim, clientes sem pedidos aparecem com as colunas de pedidos preenchidas com NULL e pedidos sem cliente correspondente aparecem com as colunas de cliente como NULL.

O comportamento depende da condição de junção. Usando, por exemplo, ON clientes.id_cliente = pedidos.id_cliente, o mecanismo tenta casar os registros por esse campo; quando não encontra par, preserva a linha original e coloca NULL nas colunas da tabela oposta.

Esse tipo de junção é indicado quando se quer uma visão completa das duas entidades, sem perder registros por falta de correspondência, facilitando a identificação de inconsistências nos dados.

Conteúdo do catálogo FC Concursos · Atualizado em

Continue aprendendo