Pular para o conteúdo principal

Questão de Banco de Dados — SQL — CESPE / CEBRASPE 2024

Banco de DadosSQL
Código
ce188252
Banca
CESPE / CEBRASPE
Órgão
TCE-AC
Ano
2024
Nível
Superior
Cargo
Analista de Tecnologia da Informação - Área: Gestão de Dados

        A seguir, são apresentadas as estruturas de duas tabelas, de nomes Customers e Orders, em um banco de dados, e também um comando SQL relativo a essas tabelas.


Imagem da questão

Com base nessas informações, julgue o item subsequente.A consulta retorna uma lista com o nome de todos os clientes e a data do pedido que eles fizeram, e mostra NULL na coluna data do pedido para os clientes que não possuem pedido.
  1. CCerto
  2. EErrado
Revelar gabarito e comentário

GabaritoC — Certo

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”.

SQL: LEFT JOIN e valores NULL

Gabarito: Certo. A afirmação está correta porque, em um LEFT JOIN, todos os registros da tabela à esquerda (Customers) são retornados, e, para os clientes sem pedido correspondente na tabela Orders, as colunas da tabela à direita (data do pedido) são preenchidas com NULL. Essa é a semântica fundamental do LEFT JOIN, que preserva as linhas da tabela da esquerda mesmo sem correspondência na direita.

O LEFT JOIN (ou LEFT OUTER JOIN) é um dos tipos de junção (JOIN) da linguagem SQL. Ele combina registros de duas tabelas com base em uma condição de igualdade entre colunas (geralmente chaves). A característica que o distingue do INNER JOIN é que o LEFT JOIN retorna todos os registros da tabela à esquerda (a primeira mencionada no comando), mesmo que não exista um registro correspondente na tabela à direita. Quando não há correspondência, as colunas da tabela à direita são preenchidas com o valor especial NULL, que representa a ausência de valor.

Imagine duas tabelas: Customers (com os clientes) e Orders (com os pedidos). Um LEFT JOIN entre elas, com Customers à esquerda, produzirá uma lista com todos os clientes. Para aqueles que fizeram pedidos, a coluna de data do pedido será preenchida com a data real. Para aqueles que nunca fizeram pedidos, a coluna de data do pedido será NULL. É exatamente isso que a afirmação descreve.

A diferença crucial está no INNER JOIN, que retorna apenas os registros que possuem correspondência em ambas as tabelas. Se um cliente não tem pedido, ele simplesmente não apareceria no resultado de um INNER JOIN. O LEFT JOIN, por outro lado, garante que todos os clientes apareçam, preenchendo com NULL as informações que faltam.

NÃO CAIA NESSA!

A banca explora a confusão clássica entre LEFT JOIN e INNER JOIN. No INNER JOIN, clientes sem pedidos seriam omitidos do resultado. No LEFT JOIN, eles são incluídos com NULL na coluna de data. A pegadinha está em o candidato ler "todos os clientes" e associar automaticamente a um INNER JOIN, quando a presença do NULL é justamente a marca registrada do LEFT JOIN.

LEFT JOIN
  • 1Retorna todos da tabela esquerda
    • Com correspondência → dados reais
    • Sem correspondência → NULL
  • 2vs INNER JOIN
    • Só registros com correspondência
    • Sem correspondência → omitido
LEVEL · soulevel.com.br

Item — ✅ CERTO

A afirmação descreve com precisão o comportamento de um LEFT JOIN. A consulta retorna o nome de todos os clientes (tabela à esquerda) e, para aqueles sem pedido, a coluna de data do pedido (tabela à direita) é preenchida com NULL. Isso é exatamente o que a semântica do LEFT JOIN determina: preservar todas as linhas da tabela à esquerda, preenchendo com NULL as colunas da tabela à direita quando não há correspondência.

Gabarito: Certo

Link permanente: /questoes/ce188252