Questão de Banco de Dados — SQL — CESPE / CEBRASPE 2025
Banco de Dados›SQL
Código
ce195208
Banca
CESPE / CEBRASPE
Órgão
BANRISUL
Ano
2025
Nível
Superior
Cargo
Técnico em Tecnologia da Informação II - Desenvolvimento de Software
Com base nas informações nas tabelas I e II, precedentes, assinale a opção em que são apresentados comandos SQL que permitem a obtenção do resultado demonstrado na tabela III.
ASELECT Clientes.Nome, Clientes.Cidade,Pedidos.DataFROM Pedidos LEFT JOIN Clientes ONPedidos.IdCliente=Clientes.IdCliente;
GabaritoD — SELECT Clientes.Nome, Clientes.Cidade,
Pedidos.Data
FROM Pedidos
INNER JOIN Clientes ON
Pedidos.IdCliente=Clientes.IdCliente;
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 – Junções (JOIN) e sintaxe de consulta
Gabarito: letra D. A consulta correta usa INNER JOIN com a condição de junção na cláusula ON, associando Pedidos.IdCliente a Clientes.IdCliente — é a única alternativa com sintaxe válida e que produz o resultado esperado (apenas os pedidos que possuem cliente correspondente). As demais alternativas contêm erros de sintaxe ou usam LEFT JOIN de forma incorreta.
O comando SELECT é a instrução fundamental da linguagem SQL para recuperar dados de um banco de dados relacional. Quando precisamos combinar dados de duas ou mais tabelas, utilizamos as junções (JOIN). A sintaxe básica de uma junção é:
SELECT colunas FROM tabela1 JOIN tabela2 ON tabela1.coluna = tabela2.coluna;
A cláusula ON estabelece a condição de junção, especificando quais colunas devem corresponder entre as tabelas. No caso da questão, a condição é Pedidos.IdCliente = Clientes.IdCliente, ou seja, para cada pedido, buscamos o cliente cujo IdCliente seja igual ao IdCliente do pedido.
Existem vários tipos de junção em SQL. O INNER JOIN retorna apenas os registros que possuem correspondência em ambas as tabelas — ou seja, pedidos que têm um cliente associado. Já o LEFT JOIN (ou LEFT OUTER JOIN) retorna todos os registros da tabela à esquerda (a primeira mencionada no FROM), mesmo que não haja correspondência na tabela à direita; nesses casos, as colunas da tabela à direita ficam com valor NULL. O RIGHT JOIN é o inverso, e o FULL OUTER JOIN retorna todos os registros de ambas as tabelas.
A pegadinha desta questão está na sintaxe: várias alternativas misturam a sintaxe antiga de junção implícita (vírgula no FROM) com a sintaxe moderna (JOIN ... ON), o que é inválido. A alternativa correta usa apenas a sintaxe moderna, com INNER JOIN e a condição na cláusula ON.
NÃO CAIA NESSA!
A banca mistura a sintaxe de junção implícita (vírgula no FROM) com a sintaxe explícita (JOIN ... ON) nas alternativas B e E, criando comandos inválidos. O candidato que conhece apenas uma das sintaxes pode não perceber o erro. Lembre-se: a sintaxe correta usa FROM tabela1 JOIN tabela2 ON condição, sem vírgula.
Junções SQL: INNER JOIN (Só registros com correspondência, Sintaxe: FROM t1 JOIN t2 ON condição); LEFT JOIN (Todos da tabela esquerda, Sem correspondência → NULL); RIGHT JOIN (Todos da tabela direita); FULL OUTER JOIN (Todos de ambas); Sintaxe inválida (Vírgula no FROM + JOIN explícito, AND no FROM)
Alternativa A — ❌ Incorreta
Usa LEFT JOIN, que retornaria todos os pedidos, inclusive aqueles sem cliente correspondente (com NULL nas colunas de Clientes). Se o resultado esperado (tabela III) não inclui pedidos sem cliente, o LEFT JOIN produziria linhas extras. Além disso, a ordem das tabelas no LEFT JOIN (Pedidos LEFT JOIN Clientes) preservaria todos os pedidos, o que não corresponde ao resultado demonstrado.
Alternativa B — ❌ Incorreta
Apresenta sintaxe inválida: mistura a junção implícita (FROM Pedidos, Clientes) com a junção explícita (INNER JOIN Clientes ON ...). A cláusula FROM não pode conter vírgula quando se usa JOIN explícito. O comando geraria erro de sintaxe.
Alternativa C — ❌ Incorreta
Usa FROM Pedidos AND Clientes, o que é totalmente inválido — AND não é um operador válido na cláusula FROM. A sintaxe correta exige vírgula (junção implícita) ou JOIN explícito. O comando geraria erro de sintaxe.
Alternativa D — ✅ Correta ⟵ GABARITO
Usa a sintaxe correta de INNER JOIN: FROM Pedidos INNER JOIN Clientes ON Pedidos.IdCliente = Clientes.IdCliente. Essa junção retorna apenas os pedidos que possuem um cliente correspondente, com as colunas Nome, Cidade (de Clientes) e Data (de Pedidos), exatamente como demonstrado na tabela III.
Alternativa E — ❌ Incorreta
Apresenta sintaxe inválida: mistura a junção implícita (FROM Pedidos, Clientes) com a junção explícita (LEFT JOIN Clientes ON ...). A cláusula FROM não pode conter vírgula quando se usa JOIN explícito. O comando geraria erro de sintaxe.
Gabarito: letra D — a única alternativa com sintaxe SQL válida e que produz o resultado esperado.