SóProvas


ID
1029829
Banca
CESPE / CEBRASPE
Órgão
TCE-RO
Ano
2013
Provas
Disciplina
Banco de Dados
Assuntos

Julgue os itens subsequentes com relação a linguagens SQL e a mecanismos de persistência.

Considere, em uma base de dados relacional, as seguintes tabelas, que contêm informações acerca de empregados, departamentos e a vinculação entre eles. Departamento (CodDepto (PK), NomeDepto) Empregado (CodEmp (PK), NomeEmp, CodDepto(FK))

Para serem obtidos os nomes dos departamentos que não estejam vinculados a nenhum empregado, é correto utilizar a consulta em SQL mostrada a seguir.

 

(SELECT NomeDepto

FROM Departamento D)

EXCEPT

(SELECT NomeDepto

FROM Departamento D, Empregado E

WHERE D.CodDepto=E.CodDepto)

 

Alternativas
Comentários
  • Departamento
    CodDepto NomeDepto

     

    Empregado
    CodEmp NomeEmp CodDepto
  • A questão completa:

    Considere, em uma base de dados relacional, as seguintes tabelas, que contêm informações acerca de empregados, departamentos e a vinculação entre eles.
     
    Departamento (CodDepto (PK), NomeDepto)
    Empregado (CodEmp (PK), NomeEmp, CodDepto(FK))
     
    Para serem obtidos os nomes dos departamentos que não estejam vinculados a nenhum empregado, é correto utilizar a consulta em SQL mostrada a seguir.
     
    (SELECT NomeDepto FROM Departamento D)
    EXCEPT
    (SELECT NomeDepto FROM Departamento D, Empregado E WHERE D.CodDepto=E.CodDepto)
  • Relação entre departamento e empregado é de 1:n

  • Except nada mais é que a diferença ("subtração") entre uma relação e outra.

    Resultado = D - E

    Ou seja, tudo que está no D e E saem, permanecendo apenas o que sobrar.

  • Outra solução: NOT IN

    SELECT NomeDepto FROM Departamento

    WHERE CodDepto NOT IN (

      SELECT D.CodDepto FROM Empregado E  JOIN Departamento D ON D.CodDepto = E.CodDepto  -- lembrando que o JOIN poderia ser substituído pelo WHERE com a associação entre as tabelas

    )