Pular para o conteúdo principal

Questão de Banco de Dados — Banco de Dados Relacionais — FURB 2025

Banco de DadosBanco de Dados Relacionais
Código
qg497156
Banca
FURB
Órgão
Prefeitura de Florianópolis - SC
Ano
2025
Nível
Superior
Cargo
Auditor Fiscal de Tributos Municipais - Tecnologia da Informação - 2º Dia
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. AA 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. BA 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. CA 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. DA 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. EA 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.
Revelar gabarito e comentário

GabaritoD — 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.

Comentário gerado por IA. É um apoio ao estudo, ancorado em fontes, mas pode conter imprecisões — confira sempre na fonte oficial (lei, súmula, edital e gabarito da banca). Encontrou um erro? Use “Reportar”.

Tipos de JOIN em SQL

Gabarito: letra D. A cláusula FULL OUTER JOIN retorna todas as linhas de ambas as tabelas envolvidas, preenchendo com NULL as colunas da tabela que não possui correspondência. Esse é o único tipo de JOIN que atende ao requisito de exibir todos os clientes e todos os pedidos, independentemente de haver correspondência.

A banca testa o conhecimento dos diferentes tipos de junção (JOIN) em SQL: INNER, LEFT, RIGHT e FULL OUTER JOIN. O comando do enunciado exige uma junção que preserve todos os registros de ambas as tabelas, o que é característica exclusiva do FULL OUTER JOIN.

ClientesPedidosClientes sem pedidosPedidos sem clienteClientes com pedidosLEVELsoulevel.com.br
Tipos de JOIN em SQL — só Clientes: Clientes sem pedidos; só Pedidos: Pedidos sem cliente; Clientes∩Pedidos: Clientes com pedidos

Alternativa A — ❌ Incorreta

A cláusula INNER JOIN (ou simplesmente JOIN) retorna apenas os registros que possuem valores correspondentes em ambas as tabelas, ou seja, a interseção dos conjuntos. Clientes sem pedidos e pedidos sem cliente seriam excluídos, contrariando o requisito.

Alternativa B — ❌ Incorreta

O RIGHT JOIN (ou RIGHT OUTER JOIN) retorna todos os registros da tabela da direita (pedidos) e os registros correspondentes da tabela da esquerda (clientes). Isso exibe todos os pedidos, mesmo aqueles sem cliente (com NULL nas colunas de clientes), mas não inclui clientes sem pedidos, pois a tabela da esquerda é a que pode ter dados não correspondentes omitidos.

Alternativa C — ❌ Incorreta

O LEFT JOIN (ou LEFT OUTER JOIN) retorna todos os registros da tabela da esquerda (clientes) e os correspondentes da direita (pedidos). Isso exibe todos os clientes, mesmo sem pedidos (com NULL nas colunas de pedidos), mas não inclui pedidos sem cliente, pois a tabela da direita pode ter dados não correspondentes omitidos.

Alternativa D — ✅ Correta ⟵ GABARITO

O FULL OUTER JOIN combina o efeito do LEFT e do RIGHT JOIN: retorna todas as linhas de ambas as tabelas. Quando não há correspondência, as colunas da tabela ausente são preenchidas com NULL. Isso atende exatamente ao que foi solicitado: todos os clientes (com seus pedidos, se houver) e todos os pedidos (com seus clientes, se houver), com NULL onde faltar vínculo.

Alternativa E — ❌ Incorreta

A cláusula JOIN (sem qualificador) é equivalente a INNER JOIN, que já vimos não atender. A descrição apresentada na alternativa ("retornaria todos os pedidos e os clientes correspondentes") refere-se, na verdade, ao RIGHT JOIN, mas o nome "JOIN" sozinho não produz esse comportamento. Além disso, mesmo que fosse RIGHT JOIN, ainda não atenderia ao requisito completo, conforme explicado na alternativa B.

Gabarito: letra D.

Link permanente: /questoes/qg497156