Questão de Banco de Dados — SQL — CESPE / CEBRASPE 2024
Banco de Dados›SQL
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.
Considerando a tabela emp do texto 6A2-I, assinale a opção correta, com base em SQL ANSI.
A
B
C
D
E
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.