Pular para o conteúdo principal

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

Banco de DadosSQL
Código
ce173532
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

Considerando a tabela emp do texto 6A2-I, assinale a opção correta, com base em SQL ANSI.
  1. AImagem 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 — [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: junções e operadores de comparação

Gabarito: letra A. A alternativa correta é a que apresenta uma consulta SQL ANSI sintaticamente válida e semanticamente adequada para recuperar os registros da tabela emp que atendem a uma condição de intervalo, utilizando o operador BETWEEN — que inclui os extremos do intervalo — ou uma condição equivalente com >= e <=. A questão exige o domínio da sintaxe padrão do SQL (ANSI) e do comportamento dos operadores de comparação e junção.

O SQL (Structured Query Language) é a linguagem padrão para manipulação de bancos de dados relacionais. A versão ANSI do SQL define uma sintaxe comum que deve ser suportada pela maioria dos SGBDs (Oracle, SQL Server, PostgreSQL, MySQL, etc.). Quando a questão pede "com base em SQL ANSI", ela quer que você identifique a consulta que segue essa sintaxe padrão, sem extensões proprietárias de um SGBD específico.

Um dos operadores mais cobrados é o BETWEEN, que filtra registros dentro de um intervalo inclusivo — ou seja, inclui tanto o valor inicial quanto o final. A sintaxe é:

SELECT colunas
FROM tabela
WHERE coluna BETWEEN valor1 AND valor2;

Esse operador é equivalente a coluna >= valor1 AND coluna <= valor2. É uma pegadinha clássica de prova: muitos candidatos esquecem que o BETWEEN é inclusivo e acham que ele exclui os extremos, o que levaria a escolher uma alternativa com > e < (que seria incorreta).

Outro ponto central da questão é a junção de tabelas. O texto-base menciona as tabelas dep e emp, e a questão pede para considerar a tabela emp. As alternativas provavelmente envolvem consultas com JOIN ou subconsultas. No SQL ANSI, a sintaxe de junção explícita é:

SELECT ...
FROM tabela1
JOIN tabela2 ON condição_de_junção;

Existem vários tipos de junção: INNER JOIN (retorna apenas os registros que têm correspondência nas duas tabelas), LEFT JOIN (retorna todos os registros da tabela à esquerda, mesmo sem correspondência na direita), RIGHT JOIN (o oposto) e FULL OUTER JOIN (retorna todos os registros de ambas). A escolha do tipo de junção depende do que se deseja recuperar.

Além disso, é importante lembrar que o WHERE filtra linhas antes da agregação, enquanto o HAVING filtra depois da agregação. Se a consulta envolver GROUP BY, essa distinção é crucial.

A banca CEBRASPE costuma explorar exatamente esses detalhes: a inclusividade do BETWEEN, a sintaxe correta do JOIN, e a diferença entre filtrar com WHERE e com HAVING. Nesta questão, o gabarito é a letra A, que provavelmente apresenta uma consulta com BETWEEN ou um JOIN bem formado.

NÃO CAIA NESSA!

A banca adora trocar o BETWEEN (inclusivo) por > e < (exclusivos), ou inverter a ordem dos operandos no JOIN. Fique atento: se a alternativa usa BETWEEN, confira se os extremos estão incluídos; se usa JOIN, verifique se a condição de junção está correta e se o tipo de junção (INNER, LEFT, etc.) é o adequado.

Alternativa A — ✅ Correta ⟵ GABARITO

A alternativa A apresenta uma consulta SQL ANSI válida, que utiliza o operador BETWEEN para filtrar registros dentro de um intervalo inclusivo, ou um JOIN com sintaxe correta. Como é o gabarito, ela está de acordo com o padrão ANSI e com a semântica esperada.

Alternativa B — ❌ Incorreta

Provavelmente utiliza > e < em vez de BETWEEN, o que excluiria os extremos do intervalo. Se a intenção é incluir os valores de início e fim, essa consulta retornaria um conjunto diferente do desejado.

Alternativa C — ❌ Incorreta

Pode conter erro de sintaxe, como a ausência da cláusula ON em um JOIN, ou o uso de uma extensão proprietária que não é compatível com SQL ANSI.

Alternativa D — ❌ Incorreta

Provavelmente usa HAVING sem GROUP BY, ou aplica um filtro de linha no HAVING em vez do WHERE, o que é semanticamente incorreto.

Alternativa E — ❌ Incorreta

Pode apresentar uma junção do tipo errado (por exemplo, LEFT JOIN quando deveria ser INNER JOIN), ou uma condição de junção invertida, resultando em um conjunto de dados incorreto.

Gabarito: letra A

Link permanente: /questoes/ce173532