Questão de Banco de Dados — SQL — INSTITUTO AOCP 2025
- Código
- qg540661
- Banca
- INSTITUTO AOCP
- Órgão
- MPE-RS
- Ano
- 2025
- Nível
- Superior
- Cargo
- Analista do Ministério Público - Informática
- AINTERSECT.
- BUNION.
- CMAXIMUS.
- DUNION ALL.
- EMINUS.
GabaritoA — INTERSECT.
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 |
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.
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.
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.
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.
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.
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