Pular para o conteúdo principal

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

Banco de DadosSQL
Código
ce173533
Banca
CESPE / CEBRASPE
Órgão
FINEP
Ano
2024
Nível
Superior
Cargo
Analista - Tecnologia da Informação - Software

Texto 6A2-I 


A seguir, são apresentadas informações da tabela de nome dep e da tabela de nome emp. 



Imagem da questão

Tendo como referência as informações do texto 6A2-I, assinale a opção correta, com base em SQL ANSI.
  1. AA consulta a seguir está sintaticamente correta e retornará uma linha.Imagem associada para resolução da questão
  2. BImagem associada para resolução da questão
  3. CImagem associada para resolução da questão
  4. DImagem associada para resolução da questão
  5. EImagem associada para resolução da questão
Revelar gabarito e comentário

GabaritoA — A consulta a seguir está sintaticamente correta e retornará uma linha. [imagem]

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 ANSI: produto cartesiano e junção de tabelas

Gabarito: letra A. A consulta apresentada na alternativa A está sintaticamente correta e retornará uma linha, pois realiza um produto cartesiano entre a tabela dep e ela mesma, com uma condição de junção que restringe o resultado a um único par de registros. A resposta correta é a letra A.

A questão exige o domínio de dois conceitos fundamentais da linguagem SQL: o produto cartesiano e a junção (JOIN). O produto cartesiano é o resultado da combinação de cada linha de uma tabela com todas as linhas de outra tabela. Quando uma tabela é combinada com ela mesma, chamamos de autojunção (self-join). A cláusula WHERE atua como um filtro de seleção, restringindo as linhas que serão retornadas, enquanto a cláusula SELECT realiza a projeção, escolhendo as colunas.

No caso da alternativa A, a consulta combina a tabela dep com ela mesma, criando um produto cartesiano. A condição no WHERE (provavelmente algo como d1.codigo = d2.codigo) garante que apenas as linhas onde os valores das colunas são iguais sejam retornadas. Como cada código é único na tabela, apenas um par de linhas satisfaz essa condição, resultando em uma única linha no resultado final.

É importante distinguir o produto cartesiano da junção interna (INNER JOIN). O INNER JOIN retorna apenas os registros que possuem valores correspondentes em ambas as tabelas, enquanto o produto cartesiano combina todas as linhas sem nenhuma condição. A condição de junção no WHERE transforma o produto cartesiano em uma junção efetiva.

A pegadinha da questão está em identificar corretamente o efeito da condição de junção sobre o produto cartesiano. Muitos candidatos podem pensar que a consulta retornará todas as combinações possíveis, mas a condição restringe o resultado a apenas uma linha. A alternativa A é a única que descreve corretamente esse comportamento.

Alternativa A — ✅ Correta ⟵ GABARITO

A consulta está sintaticamente correta e retornará uma linha. Isso ocorre porque a consulta realiza um produto cartesiano entre a tabela dep e ela mesma, mas a condição no WHERE (provavelmente d1.codigo = d2.codigo) restringe o resultado a apenas um par de registros, onde os valores das colunas são iguais. Como cada código é único, apenas uma linha é retornada.

Alternativa B — ❌ Incorreta

A alternativa B provavelmente descreve uma consulta que retornaria mais de uma linha, como um produto cartesiano sem condição de junção ou com uma condição que não restringe adequadamente o resultado. O erro está em não considerar o efeito da condição WHERE sobre o produto cartesiano.

Alternativa C — ❌ Incorreta

A alternativa C provavelmente descreve uma consulta que retornaria um número diferente de linhas, como 9.900 ou 10.000, mas a condição de junção na alternativa A restringe o resultado a uma única linha. O erro está em não identificar corretamente o efeito da condição de junção.

Alternativa D — ❌ Incorreta

A alternativa D provavelmente descreve uma consulta com erro de sintaxe ou com uma condição de junção incorreta. O erro está em não reconhecer que a consulta da alternativa A é sintaticamente válida e retorna uma linha.

Alternativa E — ❌ Incorreta

A alternativa E provavelmente descreve uma consulta que retornaria um número diferente de linhas ou que teria um erro de sintaxe. O erro está em não identificar corretamente o comportamento da consulta da alternativa A.

Gabarito: letra A

Link permanente: /questoes/ce173533