A expressão em SQL padrão descrita no quadro abaixo realiza . . .
Exercício 3
A expressão em SQL padrão descrita no quadro abaixo realiza uma consulta em um banco de dados que contém, pelo menos, duas tabelas, sendo uma denominada FUNCIONARIO e outra denominada DEPENDENTE, que armazenam informações sobre funcionários de uma empresa e seus dependentes, respectivamente.
A tabela FUNCIONARIO possui pelo menos três atributos: nome_func, sobrenome_func e cpf_func, que armazenam, respectivamente, o nome, o sobrenome e o número de CPF dos funcionários.
A tabela DEPENDENTE possui pelo menos quatro atributos: nome_depen, sobrenome_depen e cpf_depen, que armazenam, respectivamente, o nome, o sobrenome e o número de CPF dos dependentes, e cpf_func_resp, que armazena o número do CPF do funcionário responsável pelos dependentes.
SELECT nome_func, sobrenome_func
FROM FUNCIONARIO
WHERE NOT EXISTS (
SELECT * FROM DEPENDENTE
WHERE cpf_func = cpf_func_resp
);
Com base nas informações apresentadas, a consulta em SQL padrão acima descrita recupera :
Resolução
Parte 1 da resolução
Para solucionar o exercícios vamos supor que as tabelas FUNCIONARIO e DEPENDENTE estão preenchidas conforme ilustrado abaixo:
- Tabela FUNCIONARIO
-
nome_func sobrenome_func cpf_func João Alemeida 111.111.111-11 Pedro Silva 111.111.111-12 Patricia Alves 111.111.111-13 Pietra Oliveira 111.111.111-14 - Tabela DEPENDENTE
-
nome_depen sobrenome_depen cpf_depen cpf_func_resp Carla Silva 222.222.222-21 111.111.111-12 Ricardo Silva 222.222.222-22 111.111.111-12 Emanuel Silva 222.222.222-23 111.111.111-12 Enrico Oliveira 222.222.222-24 111.111.111-14 Luna Oliveira 222.222.222-25 111.111.111-14
Parte 2 da resolução
Apesar de a subquery SELECT * FROM DEPENDENTE WHERE cpf_func = cpf_func_resp
informada no exercício, somente retornar os registros da tabela DEPENDENTE que estejam relacionados com a tabela FUNCIONARIO pela foreign key cpf_func_resp, a instrução externa NOT EXISTS
é usada somente para retornar os registro que não foram encontrados no subselect.
Observação: O comando EXISTS
é usado para testar se algum registro é localizado, e sendo utilizado com a instrução NOT
a ideia é verificar se um registro não foi localizado na subquery.
Já pela query externa SELECT nome_func, sobrenome_func FROM FUNCIONARIO
sabemos que o que será encontrado são os dados de nome e sobrenome dos funcionários da tabela FUNCIONARIO, podendo-se eliminar as alternativas B, D e E.
Por fim, entre as alternativas A e C, chega-se a resolução alternativa A, já que as restrições constantes na cláusula WHERE
, conforme explicado acima e continuando a ilustração da parte 1 abaixo, irão retornar os dados de funcionários que não possuem dependentes.
- Tabela FUNCIONARIO
-
nome_func sobrenome_func João Alemeida Patricia Alves
Resolva também as questões relacionadas abaixo sobre SQL.
Julgue os próximos itens, no que diz respeito a comandos SQL de consulta.
- I Subqueries de ...
Para calcular o número de produtos com nomes que terminam com a letra B, o Auditor testou os comando ...
Na linguagem SQL, considerando duas tabelas A e B, para se obter o que está na Tabela A e não está n ...
Veja também as perguntas respondidas abaixo.
O que é uma SQL ANSI ?
Quem criou o SQL ?
O que faz um comando select ?