Avalie as afirmativas a seguir sobre operações de conjunto ...
Avalie as afirmativas a seguir sobre operações de conjunto (UNION, INTERSECT, EXCEPT), tratamento de valores NULL e duplicação de tuplas em SQL:
I. A operação UNION DISTINCT, embora semanticamente equivalente a UNION, pode ser utilizada para explicitar a remoção de duplicatas entre os resultados de duas consultas. Já UNION ALL preserva todas as tuplas, inclusive duplicadas, com melhor desempenho.
II. A linguagem SQL utiliza lógica de três valores (TRUE, FALSE, UNKNOWN) ao avaliar expressões lógicas, sendo UNKNOWN o resultado típico de comparações com NULL.
III. Em SQL, ao comparar um valor com NULL, deve-se usar o operador de igualdade (=) ou desigualdade (<>), já que NULL é tratado como um valor especial.
IV. Embora o modelo relacional clássico trate relações como conjuntos, o SQL permite tuplas duplicadas tanto em tabelas quanto em resultados de consultas, tratando seus dados como multiconjuntos (bags).
É correto o que se afirma:
Gabarito comentado
Confira o gabarito comentado por um dos nossos professores
Alternativa correta: C - I, II e IV, apenas.
Tema central da questão: O foco está em operações de conjunto no SQL (UNION, INTERSECT, EXCEPT), tratamento de valores NULL e manejo de duplicação de tuplas. Esses conhecimentos são essenciais para resolver questões práticas e teóricas sobre modelo relacional em concursos públicos.
Resumo teórico:
No modelo relacional clássico, relações são conjuntos, e não permitem duplicatas. Porém, o SQL trabalha com multiconjuntos (ou bags), aceitando tuplas repetidas.
Operações de conjunto:
- UNION: Retorna linhas de ambas as consultas, eliminando duplicatas por padrão (equivalente a UNION DISTINCT).
- UNION ALL: Retorna todas as linhas, incluindo duplicatas, com melhor desempenho.
- Comparações com NULL: SQL adota lógica de três valores: TRUE, FALSE, UNKNOWN. Qualquer comparação com NULL (exceto IS NULL/IS NOT NULL) resulta em UNKNOWN.
Justificativa da alternativa correta (C):
I. Correta. UNION DISTINCT (ou só UNION) remove duplicatas; UNION ALL preserva todas as tuplas e é mais eficiente.
II. Correta. SQL usa lógica de três valores. Comparar qualquer valor com NULL resulta em UNKNOWN.
IV. Correta. SQL permite duplicatas nas tabelas e nos resultados das consultas, tratando dados como bags.
Análise das alternativas incorretas:
III. Incorreta. Não se deve usar = ou <> para comparar com NULL. Para isso, usa-se IS NULL ou IS NOT NULL. Qualquer outra comparação com NULL retorna UNKNOWN, não TRUE ou FALSE.
Estratégia para concursos: Atente para palavras-chave como “distinto”, “duplicadas”, “UNKNOWN” e “modelo relacional”. Pegadinhas comuns incluem afirmações sobre como tratar NULL (não use = ou <>!), ou confundir a teoria relacional (conjuntos) com a prática do SQL (multiconjuntos).
Gostou do comentário? Deixe sua avaliação aqui embaixo!
Clique para visualizar este gabarito
Visualize o gabarito desta questão clicando no botão abaixo
Comentários
Veja os comentários dos nossos alunos
Em SQL, ao comparar um valor com NULL, NÃO se deve usar os operadores de igualdade (=) ou desigualdade (<>) convencionais.
O correto é: NULL representa um valor desconhecido ou ausente, portanto:
- Para verificar se um valor é NULL: usa-se
- Para verificar se um valor não é NULL: usa-se
A lógica por trás disso é que qualquer comparação com NULL resulta em UNKNOWN (desconhecido) na lógica ternária do SQL (TRUE, FALSE, UNKNOWN), e apenas condições TRUE são consideradas para filtrar registros.
Clique para visualizar este comentário
Visualize os comentários desta questão clicando no botão abaixo