Os materiais didáticos aqui disponibilizados estão licenciados através de Creative Commons Atribuição-SemDerivações-SemDerivados CC BY-NC-ND. Você possui a permissão para visualizar e compartilhar, desde que atribua os créditos do autor. Não poderá alterá-los e nem utilizá-los para fins comerciais.
Atribuição-SemDerivações-SemDerivados
CC BY-NC-ND
Cursos / Informática para Internet / Banco de Dados / Aula
Você deve ter notado que os comandos de consulta, descrição e de exclusão de uma VIEW são iguais aos de uma tabela real. Mas será que podemos inserir, atualizar e apagar dados através das visões? Em alguns casos, pode-se realmente inserir, atualizar e excluir os dados através das visões, desde que na visão não tenha valores agregados, tais como SUM, COUNT e AVG, e nem cláusulas como GROUP BY e DISTINCT.
Para continuarmos os nossos estudos, considere um banco de dados, denominado sispagamentos, que representa um sistema de pagamentos dos funcionários de uma determinada empresa contendo as seguintes tabelas:
As estruturas das tabelas empregados, pagamentos e descontos são ilustradas na Figura 4. Analise com cuidado essas estruturas e não se esqueça de implementá-las em seu SGBD, essa é uma ótima maneira de fixar os conceitos aprendidos. Inicialmente, não será necessário incluir dados nessas tabelas.
Vamos criar duas visões. A primeira, denominada funcionarios, exibirá os nomes dos empregados e seus respectivos CPFs. A segunda, denominada salario, exibirá os nomes dos empregados, o salário bruto, o desconto de INSS, o desconto de IR e o salário líquido. Os comandos para as criações das visões funcionarios e salários são apresentados no quadro abaixo. Analise com cuidado esses comandos e não deixe de implementá-los no seu SGBD. Lembre-se: a prática leva a perfeição!
mysql> CREATE VIEW funcionario AS
SELECT empreg_nome, empreg_cpf
FROM empregados;
mysql> CREATE VIEW salario AS
SELECT empreg_nome AS nome,
(SELECT pag_salario FROM pagamentos
WHERE empreg_codigo = pag_codempregado) AS salario_bruto,
(SELECT desc_inss FROM descontos
WHERE empreg_codigo = desc_codempregado) AS INSS,
(SELECT desc_ir FROM descontos
WHERE empreg_codigo = desc_codempregado) AS IR,
(SELECT pag_salario FROM pagamentos
WHERE empreg_codigo = pag_codempregado) -
(SELECT desc_inss FROM descontos
WHERE empreg_codigo = desc_codempregado) -
(SELECT desc_ir FROM descontos
WHERE empreg_codigo = desc_codempregado)
AS salario_liquido FROM empregados;
A criação das visões funcionario e salario está ilustrada na Figura 5 e suas respectivas estruturas estão na Figura 6.
Versão 5.3 - Todos os Direitos reservados