SóProvas


ID
330163
Banca
FGV
Órgão
DETRAN-RN
Ano
2010
Provas
Disciplina
Banco de Dados
Assuntos

Assinale a alternativa correta sobre fragmento de comando a seguir:
(select distinct nome_cliente
from contas)
intersect
(select distinct nome_cliente
from emprestimos)

Alternativas
Comentários
  • Os Comandos UNION e INTERSECT eliminam, por padrão, os resultados duplicados, então já eliminamos:

    b) Se um cliente tem diversas contas e empréstimos no banco, aparecerá todas as repetições no resultado.

    INTERSECT funciona como uma interseção, o que está em A e em B, então no resultado aparecerá apenas resultados contidos nas duas subqueries.

    a) Se um cliente possui conta mas não possui empréstimos no banco, aparecerá no resultado.
    e) Se um cliente não possui conta mas possui empréstimos no banco, aparecerá no resultado.

    c) Se um cliente tem diversas contas e empréstimos no banco, não aparecerá no resultado.
    Aparecerá apenas uma vez.
  • Cláusula UNION
    A cláusula UNION possui a forma geral
    comando_de_seleçãoUNION [ ALL ] comando_de_seleção
    onde comando_de_seleção é qualquer comando SELECT sem as cláusulas ORDER BY, LIMIT e FOR UPDATE (as cláusulas ORDER BY e LIMIT podem ser aplicadas a uma subexpressão se esta estiver entre parênteses. Sem os parênteses, estas cláusulas são consideradas como aplicadas ao resultado da cláusula UNION, e não à sua expressão de entrada à direita).
    O operador UNION computa o conjunto união das linhas retornadas pelos comandos SELECT envolvidos. Uma linha estará presente no conjunto união dos dois conjuntos de resultados se estiver presente em pelo menos um destes dois conjuntos de resultados. Os dois comandos SELECT que representam os operandos diretos do operadorUNION devem produzir o mesmo número de colunas, e as colunas correspondentes devem possuir tipos de dado compatíveis.
    O resultado do operador UNION não contém nenhuma linha duplicada, a menos que a opção ALL seja especificada. ALL não permite a eliminação das duplicatas( portanto,UNION ALL geralmente é significativamente mais rápido do que UNION; deve ser utilizado ALL se for possível).
    Havendo vários operadores UNION no mesmo comando SELECT, estes são avaliados da esquerda para a direita, a menos que os parênteses indiquem o contrário.
    Atualmente não pode ser especificado FOR UPDATE nem para o resultado do operador UNION, nem para qualquer entrada do operador UNION. [11] [12]
    Cláusula INTERSECT
    A cláusula INTERSECT possui a forma geral
    comando_de_seleçãoINTERSECT [ ALL ] comando_de_seleção
    onde comando_de_seleção é qualquer comando SELECT sem as cláusulas ORDER BY, LIMIT e FOR UPDATE.
    O operador INTERSECT computa o conjunto interseção das linhas retornadas pelos comandos SELECT envolvidos. Uma linha estará na interseção dos dois conjuntos de resultados se estiver presente nos dois conjuntos de resultados.
    O resultado do operador INTERSECT não contém nenhuma linha duplicada, a menos que a opção ALL seja especificada. Usando ALL, uma linha contendo m duplicatas na tabela à esquerda e n duplicatas na tabela à direita, aparecerá min(m,n) vezes no conjunto de resultados.
    Havendo vários operadores INTERSECT no mesmo comando SELECT, estes são avaliados da esquerda para a direita, a menos que os parênteses indiquem outra ordem. O operador INTERSECT tem nível de precedência superior ao do operador UNION, ou seja, A UNION B INTERSECT C é lido como A UNION (B INTERSECT C).
    Atualmente a cláusula FOR UPDATE não pode ser especificada para o resultado do operador INTERSECT, nem em qualquer entrada do operador INTERSECT.