Pular para o conteúdo principal

Questão de Banco de Dados — SQL — INSTITUTO AOCP 2025

Banco de DadosSQL
Código
qg540661
Banca
INSTITUTO AOCP
Órgão
MPE-RS
Ano
2025
Nível
Superior
Cargo
Analista do Ministério Público - Informática
Dentro do Banco de Dados Oracle, uma consulta composta é aquela que utiliza operadores de conjuntos. Esses operadores combinam os resultados de duas ou mais consultas componentes em um resultado. Nesse contexto, um operador que retorna todas as linhas distintas selecionadas pelas duas consultas é
  1. AINTERSECT.
  2. BUNION.
  3. CMAXIMUS.
  4. DUNION ALL.
  5. EMINUS.
Revelar gabarito e comentário

GabaritoA — INTERSECT.

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

Operadores de conjuntos no Oracle

Gabarito: letra A. O operador que retorna todas as linhas distintas selecionadas pelas duas consultas é o INTERSECT, pois ele devolve apenas a interseção entre os resultados — ou seja, as linhas que aparecem em ambas as consultas, sem duplicatas. O enunciado pede exatamente isso: "retorna todas as linhas distintas selecionadas pelas duas consultas", o que corresponde à operação de interseção de conjuntos.

Os operadores de conjunto no SQL (e no Oracle) são utilizados para combinar os resultados de duas ou mais consultas em um único resultado. Eles funcionam como operações matemáticas de conjuntos aplicadas a tabelas de resultados. Os principais são: UNION, UNION ALL, INTERSECT e MINUS (no Oracle; em outros SGBDs, como PostgreSQL e SQL Server, o equivalente é o EXCEPT). Cada um tem um comportamento específico em relação a quais linhas retorna e se elimina duplicatas.

O UNION combina os resultados de duas consultas e retorna todas as linhas distintas — ou seja, elimina as duplicatas, executando internamente um SELECT DISTINCT. Já o UNION ALL faz o mesmo, mas não elimina duplicatas, retornando todas as linhas de ambas as consultas, inclusive as repetidas. O INTERSECT retorna apenas as linhas que estão presentes em ambas as consultas, também eliminando duplicatas. Por fim, o MINUS retorna as linhas que estão na primeira consulta, mas não na segunda.

A pegadinha desta questão está na interpretação do enunciado. A banca descreve o operador que "retorna todas as linhas distintas selecionadas pelas duas consultas". Isso pode parecer, à primeira vista, o UNION, que também retorna linhas distintas. Porém, a expressão "selecionadas pelas duas consultas" indica que a linha deve estar presente em ambas as consultas — ou seja, é a interseção. O UNION retorna linhas que estão em uma ou na outra (ou em ambas), enquanto o INTERSECT retorna apenas as que estão nas duas. Portanto, a descrição do enunciado corresponde exatamente ao INTERSECT.

Para fixar, veja a comparação:

Operador

O que retorna

Duplicatas eliminadas?

UNION

Linhas de ambas as consultas (união)

Sim

UNION ALL

Linhas de ambas as consultas (união)

Não

INTERSECT

Linhas presentes em ambas (interseção)

Sim

MINUS

Linhas da 1ª que não estão na 2ª (diferença)

Sim

NÃO CAIA NESSA!

A banca descreve o INTERSECT, mas o candidato apressado lê "linhas distintas" e marca UNION. A diferença está na expressão "selecionadas pelas duas consultas": o UNION retorna linhas de uma ou de outra; o INTERSECT retorna apenas as que estão nas duas. Leia com atenção: se a linha precisa estar em ambas, é interseção.

Alternativa A — ✅ Correta ⟵ GABARITO

O INTERSECT retorna exatamente as linhas que estão presentes em ambas as consultas, eliminando duplicatas. É a operação de interseção de conjuntos aplicada a resultados de consultas SQL. O enunciado pede "todas as linhas distintas selecionadas pelas duas consultas", o que corresponde precisamente à interseção.

Alternativa B — ❌ Incorreta

O UNION retorna todas as linhas de ambas as consultas (união), eliminando duplicatas. A diferença crucial é que o UNION inclui linhas que estão em apenas uma das consultas, enquanto o INTERSECT exige que a linha esteja nas duas. O enunciado pede linhas "selecionadas pelas duas consultas", o que exclui o UNION.

Alternativa C — ❌ Incorreta

MAXIMUS não é um operador de conjunto válido no Oracle nem no padrão SQL. Não existe tal operador na linguagem. É um distrator inventado pela banca.

Alternativa D — ❌ Incorreta

O UNION ALL retorna todas as linhas de ambas as consultas, incluindo duplicatas. O enunciado pede "linhas distintas", o que já elimina o UNION ALL, pois ele não elimina duplicatas. Além disso, ele também inclui linhas que estão em apenas uma das consultas, não apenas nas duas.

Alternativa E — ❌ Incorreta

O MINUS retorna as linhas que estão na primeira consulta, mas não na segunda (diferença de conjuntos). O enunciado pede linhas que estão nas duas consultas, o que é o oposto do MINUS. O MINUS retorna linhas exclusivas da primeira consulta.

Gabarito: letra A

Link permanente: /questoes/qg540661