7P/SI – 2010/01 Prof. Carlos Alberto Seixas
Agenda Visão Geral sobre os Conceitos e Implementação sobre SGBs MySQL Revisão das Práticas Práticas 1 e 2 (aula 3). Prática 3 – Permissões no MySQL Prática 4 – Definição de chaves Novas Práticas: Prática 5 Prática 6 Pontos de discussão: Bancos de Dados Trabalho em grupo para preparação do seminário
Conceitos e Implementação sobre MySQL Views Uma view(visão) é uma tabela virtual na qual os dados não estão fisicamente armazenados. Ela é apenas uma visão de um grupo de colunas de uma ou mais tabelas do banco de dados. No exemplo abaixo, criaremos uma view que terá apenas as colunas COD_PRODUTO, DSC_PRODUTO. CREATE VIEW loja.VIEW_PRODUTOS AS SELECT cod_produto, dsc_produto FROM produtos;
View Resultado: CREATE VIEW loja.VIEW_PRODUTOS AS SELECT cod_produto, dsc_produto FROM produtos;
Stored Procedures Conjunto de comandos SQL armazendos no servidor que realizam tarefas específicas e são ativadas como comandos. Podem receber parâmetros de entrada, saída ou entrada e saída.
Stored Procedures Exemplo: DELIMITER $$ DROP PROCEDURE IF EXISTS escola.pr_total $$ CREATE PROCEDURE escola.pr_total ( OUT total INT) BEGIN SELECT count(0) INTO total FROM produtos; END $$
Stored Procedures Executando a procedure via linha de comando C:\ mysql -u root -p (após teclar ENTER informe a senha do usuário root) mysql> use loja (Informamos o database que iremos utilizar) mysql> call (Chamamos a procedure pr_total e armazenamos o resultado em teste.) mysql> ( Exibimos o resultado. No exemplo acima, trazemos a quantidade de produtos cadastrados.)
Triggers É um bloco PL/SQL armazendo em um banco de dados e executado sempre que o evento ocorrer. Esse evento pode ser um DML (update, insert, delete), um DDL (create, alter, drop, truncate table) ou mesmo um evento ocorrido do banco, como uma conexão, por exemplo.
Triggers Exemplo: Criaremos a tabela HISTÓRICO que armazenará todas as alterações de valores efetuadas na tabela de PRODUTOS. CREATE TABLE loja.historico ( COD_HIST INTEGER NOT NULL AUTO_INCREMENT, COD_PRODUTO INTEGER NOT NULL, DT_ALTERACAO DATE NOT NULL, VLR_ANTIGO DOUBLE(4,2) NOT NULL, VLR_NOVO DOUBLE(4,2) NOT NULL, FOREIGN KEY(COD_PRODUTO) REFERENCES produtos(COD_PRODUTO), PRIMARY KEY(COD_HIST) ) ENGINE = INNODB;
Triggers A trigger TR_PRODUP que será acionada quando ocorrer um UPDATE na tabela de PRODUTOS. DELIMITER $$ DROP TRIGGER loja.tr_produp $$ CREATE TRIGGER tr_produp BEFORE UPDATE ON produtos FOR EACH ROW BEGIN DECLARE TESTE VARCHAR(30); DECLARE DATA DATE; SET DATA = NOW(); INSERT INTO HISTORICO SET COD_PRODUTO = OLD.cod_produto, VLR_ANTIGO = OLD.vlr_produto, VLR_NOVO = NEW.vlr_produto, DT_ALTERACAO = DATA; END $$
Triggers Após alterarmos algum dado na tabela produtos é disparado a trigger tr_produp que fará automaticamente uma inserção na tabela de histórico. Para testarmos, pode-se alterar o valor de um produto de R$ 22,00 para R$ 25,00. UPDATE produtos SET vlr_produto = WHERE cod_produto = 1;
Triggers Após a atualização, se dermos um SELECT na tabela HISTÓRICO teremos como resultado: SELECT * FROM historico;
Exercício Prática 1 – Manipulação de objetos no MySQL, via SQLYog,Verificação do serviço MySQL, conexão com MySQL através do MySQL Yog, criação Banco de Dados: Escola, criação tabela alunos, verificação do tipo de tabela criada
Pontos de discussão - Seminário Definição dos pontos propostos na aula passada; Apresentação de textos da pesquisa realizada; Construção de argumentação para os novos pontos apresentados;
Bibliografia Guia de referencia MySql 5.0, disponível em Mysql.com Julio César Martini,Imasters.com, Mysql 5.