Cursos / Redes de Computadores / Conceitos de Banco de Dados / Aula

arrow_back Aula 07 - Linguagem SQL - Subconsultas e Visões

Inserindo, atualizando e apagando dados com visões

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:

  • empregados (codigo_empregado [chave primária], nome, CPF, sexo e dataNascimento);
  • pagamentos (codigo_pagamento [chave primária], codigo_empregado [chave estrangeira], salario);
  • descontos (codigo_desconto [chave primária], codigo_empregado [chave estrangeira], INSS, IR).

As estruturas das tabelas empregados, pagamentos e descontos são ilustradas na Figura 13. 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.

Perceba, conforme Figura 13, que as chaves primárias estão com informação de campo extra chamada auto_increment. O auto_increment é uma opção que pode ser adicionada a um atributo para que o banco de dados MySQL gere automaticamente valores únicos para esta coluna. Sendo assim, com essa opção habilitada, não é necessário informar o valor da chave primária no comando de INSERT para essas tabelas. Além disso, o próprio banco garante que os valores para esse campo serão únicos.

Figura 13 - Tela do MySQL após os comandos de visualização das estruturas das tabelas do banco de dados sispagamentos.
Tela do <span class='italico'>My</span>SQL após os comandos de visualização das estruturas das tabelas do banco de dados sispagamentos.
Fonte: MySQL 5.7 Command Line Client

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!

x
1
mysql> CREATE VIEW funcionario AS
2
    SELECT empreg_nome, empreg_cpf
3
    FROM empregados;
4
5
mysql> CREATE VIEW salario AS
6
    SELECT empreg_nome AS nome, 
7
    (SELECT pag_salario FROM pagamentos 
8
    WHERE empreg_codigo = pag_codempregado) AS salario_bruto,
9
    (SELECT desc_inss FROM descontos 
10
    WHERE empreg_codigo = desc_codempregado) AS INSS,
11
    (SELECT desc_ir FROM descontos 
12
    WHERE empreg_codigo = desc_codempregado) AS IR,
13
    (SELECT pag_salario FROM pagamentos 
14
    WHERE empreg_codigo = pag_codempregado)  -
15
    (SELECT desc_inss FROM descontos 
16
    WHERE empreg_codigo = desc_codempregado)  -
17
    (SELECT desc_ir FROM descontos 
18
    WHERE empreg_codigo = desc_codempregado) 
19
    AS salario_liquido FROM empregados;

A criação das visões funcionario e salario está ilustrada na Figura 14 e suas respectivas estruturas estão na Figura 15.

Figura 14 - Tela do MySQL após os comandos de criação das visõesfuncionario e salário.
Tela do <span class='italico'>My</span>SQL após os comandos de criação das <span class='strong'>visõesfuncionario</span> e <span class='strong'>salário</span>.
Fonte: MySQL 5.7 Command Line Client

 

Figura 15 - Tela do MySQL após os comandos DESC funcionario e DESC salário.
Tela do <span class='italico'>My</span>SQL após os comandos DESC <span class='strong'>funcionario</span> e DESC <span class='strong'>salário</span>.
Fonte: MySQL 5.7 Command Line Client

Versão 5.3 - Todos os Direitos reservados