Avalie as afirmativas a seguir sobre operações de conjunto ...

Próximas questões
Com base no mesmo assunto
Q3506015 Banco de Dados

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:

Alternativas

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.
Fonte: Date, C.J. - An Introduction to Database Systems; Oracle/IBM SQL Reference Manuals.

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