15/1/20141 banco de dados em aplicativos web aula 13 professor leomir j. borba-...

21
03/07/22 1 BANCO DE DADOS EM APLICATIVOS WEB Aula 13 Professor Leomir J. Borba- [email protected] –http://professorleomir.wordpress.com

Upload: internet

Post on 17-Apr-2015

102 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: 15/1/20141 BANCO DE DADOS EM APLICATIVOS WEB Aula 13 Professor Leomir J. Borba- professor.leomir@gmail.com –

11/04/23 1

BANCO DE DADOS EM APLICATIVOS WEB Aula 13

Professor Leomir J. Borba- [email protected] –http://professorleomir.wordpress.com

Page 2: 15/1/20141 BANCO DE DADOS EM APLICATIVOS WEB Aula 13 Professor Leomir J. Borba- professor.leomir@gmail.com –

11/04/23 2Professor Leomir J. Borba- [email protected] –http://professorleomir.wordpress.com

Agenda

Procedimentos (Procedures)Gatilhos (Triggers)Conexão do Banco de Dados com a Linguagem de Programação.

Page 3: 15/1/20141 BANCO DE DADOS EM APLICATIVOS WEB Aula 13 Professor Leomir J. Borba- professor.leomir@gmail.com –

11/04/23 3Professor Leomir J. Borba- [email protected] –http://professorleomir.wordpress.com

Procedimentos (Procedures)•Também chamados de procedimentos armazenados (stored procedures), representam porções de código SQL e não SQL que ficam armazenados de forma compilada no catálogo do SGBD e são ativados explicitamente por aplicações, triggers ou outras rotinas. Como nas linguagens tradicionais de programação, um procedimento realiza um processamento qualquer e não devolve valor algum em seu final.

Page 4: 15/1/20141 BANCO DE DADOS EM APLICATIVOS WEB Aula 13 Professor Leomir J. Borba- professor.leomir@gmail.com –

11/04/23 4Professor Leomir J. Borba- [email protected] –http://professorleomir.wordpress.com

Procedimentos (Procedures)•Modelos de acesso

Page 5: 15/1/20141 BANCO DE DADOS EM APLICATIVOS WEB Aula 13 Professor Leomir J. Borba- professor.leomir@gmail.com –

11/04/23 5Professor Leomir J. Borba- [email protected] –http://professorleomir.wordpress.com

Procedimentos (Procedures)•Modelos de acesso - continuação

Page 6: 15/1/20141 BANCO DE DADOS EM APLICATIVOS WEB Aula 13 Professor Leomir J. Borba- professor.leomir@gmail.com –

11/04/23 6Professor Leomir J. Borba- [email protected] –http://professorleomir.wordpress.com

Procedimentos (Procedures)•Manipulação

•Criação – Sem Parametros.

DELIMITER //CREATE PROCEDURE <NOME PROCEDURE>ASBEGIN SELECT * FROM EMPREGADO ORDER BY NOME DESCEND //

Page 7: 15/1/20141 BANCO DE DADOS EM APLICATIVOS WEB Aula 13 Professor Leomir J. Borba- professor.leomir@gmail.com –

11/04/23 7Professor Leomir J. Borba- [email protected] –http://professorleomir.wordpress.com

Procedimentos (Procedures)•ManipulaçãoCriação – Com Parametros.

DELIMITER //CREATE PROCEDURE <NOME PROCEDURE>( IN NOMEVARIAVEL INT)ASBEGIN SELECT * FROM EMPREGADO ORDER BY NOME DESCEND //

Page 8: 15/1/20141 BANCO DE DADOS EM APLICATIVOS WEB Aula 13 Professor Leomir J. Borba- professor.leomir@gmail.com –

11/04/23 8Professor Leomir J. Borba- [email protected] –http://professorleomir.wordpress.com

Procedimentos (Procedures)•Parâmetros dos Stored Procedures

Quase todos os stored procedure a desenvolver requerem parâmetros. Parâmetros fazem o stored procedure mais flexível e útil. No MySQL, um parâmetro adquire um dos seguintes tmodos - IN, OUT e INOUT

•IN indica que um parâmetro pode ser passado, mas qualquer alteração dentro do stored procedure não altera o parâmetro. Suponha que você quer passaro parâmetro ID, que é igual a 10, para o stored procedure getAll (Id), após executar o stored procedure o valor do Id ainda é 10 mesmo que o stored procedure getAll altere o valor do mesmo.

•OUT este modo indica que o stored procedure pode alterar o parâmetro e devolve-lo ao programa de chamada.

•INOUT, É a combinação do modo IN e OUT, você pode passar parâmetros para o stored procedure e recuperá-los com um novo valor a partir do programa de chamada.

Page 9: 15/1/20141 BANCO DE DADOS EM APLICATIVOS WEB Aula 13 Professor Leomir J. Borba- professor.leomir@gmail.com –

11/04/23 9Professor Leomir J. Borba- [email protected] –http://professorleomir.wordpress.com

Procedimentos (Procedures)•Manipulação – Continuação

• Execução sem parametros - • CALL < NOME PROCEDURE>;

• Execução com parametros - • CALL < NOME PROCEDURE>(<par 1>, <par 2>);

Page 10: 15/1/20141 BANCO DE DADOS EM APLICATIVOS WEB Aula 13 Professor Leomir J. Borba- professor.leomir@gmail.com –

11/04/23 10Professor Leomir J. Borba- [email protected] –http://professorleomir.wordpress.com

Procedimentos (Procedures)• Manipulação - Continuação

•Alteração – ALTER PROCEDURE <NOME PROCEDURE>ASBEGIN

SELECT * FROM EMPREGADOORDER BY CPF ASC

END

•Exclusão - •DROP PROCEDURE <SCHEMA>.<NOME PROCEUDRE>;

Page 11: 15/1/20141 BANCO DE DADOS EM APLICATIVOS WEB Aula 13 Professor Leomir J. Borba- professor.leomir@gmail.com –

11/04/23 11Professor Leomir J. Borba- [email protected] –http://professorleomir.wordpress.com

Gatilhos (Triggers)

•Um gatilho (ou TRIGGER) é uma porção de código composto por instruções SQL e não-SQL que ficam armazenados no catálogo do SGBD e que são ativados automaticamente pelo gerenciador de banco de dados quando um determinado evento ocorre.

•Os TRIGGERS poderão ser disparados para trabalharem antes ou depois do evento

•Apenas 1 TRIGGER por evento.

Page 12: 15/1/20141 BANCO DE DADOS EM APLICATIVOS WEB Aula 13 Professor Leomir J. Borba- professor.leomir@gmail.com –

11/04/23 12Professor Leomir J. Borba- [email protected] –http://professorleomir.wordpress.com

Gatilhos (Triggers)

•Eventos que podem acionar um TRIGGER:

•INSERT, UPDATE, REPLACE, DELETE OU UPDATE

•Pode-se definir vários TRIGGER em um banco de dados.

•As clausulas que definem quando o TRIGGER será disparado são :

•BEFORE - Antes de um evento.•AFTER - Depois de um evento.

Page 13: 15/1/20141 BANCO DE DADOS EM APLICATIVOS WEB Aula 13 Professor Leomir J. Borba- professor.leomir@gmail.com –

11/04/23 13Professor Leomir J. Borba- [email protected] –http://professorleomir.wordpress.com

Gatilhos (Triggers)

•Operadores necessários para acessar atributo/valor para definição na criação de um TRIGGER:

•NEW.nome_coluna – Disponivel quando ao inserir o uma nova linha ou tupla na tabela.

•OLD.nome_coluna – Disponivel ao excluir uma linha ou tupla

•NEW e OLD estão disponiveis para UPDATE e REPLACE

Page 14: 15/1/20141 BANCO DE DADOS EM APLICATIVOS WEB Aula 13 Professor Leomir J. Borba- professor.leomir@gmail.com –

11/04/23 14Professor Leomir J. Borba- [email protected] –http://professorleomir.wordpress.com

Gatilhos (Triggers)

•Diretrizes para uso de TRIGGERS:

• INSERT: o operador NEW.nome_coluna, nos permite verificar o valor enviado para ser inserido em uma coluna de uma tabela. OLD.nome_coluna não está disponível.

• DELETE: o operador OLD.nome_coluna nos permite verificar o valor excluído ou a ser excluído. NEW.nome_coluna não está disponível.•- UPDATE: tanto OLD.nome_coluna quanto NEW.nome_coluna estão disponíveis, antes (BEFORE) ou depois (AFTER) da atualização de uma linha.

Page 15: 15/1/20141 BANCO DE DADOS EM APLICATIVOS WEB Aula 13 Professor Leomir J. Borba- professor.leomir@gmail.com –

11/04/23 15Professor Leomir J. Borba- [email protected] –http://professorleomir.wordpress.com

Gatilhos (Triggers)

Exemplo :

Page 16: 15/1/20141 BANCO DE DADOS EM APLICATIVOS WEB Aula 13 Professor Leomir J. Borba- professor.leomir@gmail.com –

11/04/23 16Professor Leomir J. Borba- [email protected] –http://professorleomir.wordpress.com

Conexão de BD com Linguagem de programação

•O SQL Server pode ser utilizado com varias linguagens, entre elas o PHP, e há duas formas distintas de conexão ao banco de dados utilizando a linguagem de programação interpretada. Uma das formas e a mais usada é a conexão nativa do PHP mssql_connect(), a outra forma é a conexão ODBC

Page 17: 15/1/20141 BANCO DE DADOS EM APLICATIVOS WEB Aula 13 Professor Leomir J. Borba- professor.leomir@gmail.com –

11/04/23 17Professor Leomir J. Borba- [email protected] –http://professorleomir.wordpress.com

Conexão de BD com Linguagem de programação

Conexão nativa com mssql_connect():

A conexão mssql_connect() do PHP é realizada através da extensão do PHP chamada php_pdo_mssql, o código:<? $con = mssql_connect("servidor", "usuario", "senha"); mssql_select_db("bancodedados",$con); ?>

Um exemplo de select com esta conexão:<? $SQL = "SELECT * FROM bancodedados.dbo.tabela"; $res = mssql_query($SQL,$con); while($RFP = mssql_fetch_array($res)) { echo $RFP['campo'].'<br />'; } ?>

Page 18: 15/1/20141 BANCO DE DADOS EM APLICATIVOS WEB Aula 13 Professor Leomir J. Borba- professor.leomir@gmail.com –

11/04/23 18Professor Leomir J. Borba- [email protected] –http://professorleomir.wordpress.com

Conexão de BD com Linguagem de programação

Conexão através de ODBC:

A conexão ODBC é a mais utilizada em casos onde a linguagem não tem conexão nativa, porém pode ser utilizada para qualquer conexão a banco de dados.

<? $con = odbc_connect("DRIVER={SQL Server}; SERVER=servidor; DATABASE=bancodedados;", "usuario","senha"); ?>

Um exemplo de select com esta conexão:<? $SQL = "SELECT * FROM bancodedados.dbo.tabela"; $res = odbc_exec($con, $SQL) while($RFP = odbc _fetch_array($res)) { echo $RFP['campo'].'<br />'; } ?>

Page 19: 15/1/20141 BANCO DE DADOS EM APLICATIVOS WEB Aula 13 Professor Leomir J. Borba- professor.leomir@gmail.com –

11/04/23 19Professor Leomir J. Borba- [email protected] –http://professorleomir.wordpress.com

Exercícios

TRIGGERS:

Criar uma tabela com nome tbl_cliente com os seguintes atributos:cliente_id intcliente_nome char(80) not nullcliente_email char(40) not nulldt_cadastro time not null

Criar um trigger que valide se os dados foram passados em uma declaração INSERT antes (BEFORE) que sejam cadastrados na tabela de exemplo. Validar o nome com quantidade de caracteres maior ou igual a 4 (quatro), dica, usar a função CHAR_LENTH() .

Criar um TRIGGER para gravar o histórico de exclusão de registros, contendo data da exclusão, nome do usuário e nome do cliente

Page 20: 15/1/20141 BANCO DE DADOS EM APLICATIVOS WEB Aula 13 Professor Leomir J. Borba- professor.leomir@gmail.com –

11/04/23 20Professor Leomir J. Borba- [email protected] –http://professorleomir.wordpress.com

Exercícios

Procedures:

Criar um stored procedure para efetuar consulta de pedidos, incluindo os itens, passando-se o numero do pedido como parametro (usar tabelas criadas em laboratório nas aulas anteriores).

Todos os scripts de exercicios, funcionando ou nao devem ser enviados para o email do professor.

Page 21: 15/1/20141 BANCO DE DADOS EM APLICATIVOS WEB Aula 13 Professor Leomir J. Borba- professor.leomir@gmail.com –

11/04/23 21Professor Leomir J. Borba- [email protected] –http://professorleomir.wordpress.com

BIBLIOGRAFIA BÁSICA

1DATE, C.J. Introdução a Sistemas de Bancos de Dados. 8ª Ed. Rio de Janeiro: Campus, 2004.

2NAVATHE, S. B.; ELMASRI, R. E. Sistemas de Banco de Dados, 4ª edição, Editora Pearson Addison Wesley, 2005.

3SETZER, V. W., SILVA, F.S.C. Banco de Dados. 1ª Ed. São Paulo: Edgard Blucher, 2005.

BIBLIOGRAFIA COMPLEMENTAR

4COUGO, P. Modelagem Conceitual e Projeto de Banco de Dados, Editora Campus.

5KORTH, H. F.; SILBERSCHATZ, A.; SUDARSHAN, S., Sistemas de Banco de Dados, Editora Makron Books, 1999.

6MACHADO, Felipe Nery Rodrigues: Análise Relacional de Sistemas; São Paulo: Editora Érica, 2001.

7SETZER, V.W., NASSU, E.A. Banco de Dados Orientados a Objetos. São Paulo: Ed. Edgard Blucher, 1999.

BIBLIOGRAFIA