banco de dados ii

25
5P/SI – 2011/01 Prof. Carlos Alberto Seixas

Upload: gannon-porter

Post on 30-Dec-2015

23 views

Category:

Documents


2 download

DESCRIPTION

Banco de Dados II. 5P/SI – 2011/01 Prof. Carlos Alberto Seixas. Agenda. Implementação sobre SGBD MySQL DateTime, Date, Timestamp Stored Procedures Functions. O ano de 2038. - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Banco de Dados II

5P/SI – 2011/01

Prof. Carlos Alberto Seixas

Page 2: Banco de Dados II

AgendaImplementação sobre SGBD MySQL

DateTime, Date, TimestampStored ProceduresFunctions

Page 3: Banco de Dados II

O ano de 2038O problema do ano 2038 é uma falha na

representação de datas em computadores, que pode causar erros em alguns programas de computador no ano de 2038.

O problema afeta os programas que utilizam a representação de tempo POSIX, em que a data é calculada através do número de segundos (ignorando os segundos bissextos) desde 1 de janeiro de 1970.

Page 4: Banco de Dados II

DatetimeO tipo DATETIME é usado quando você

precisa de valores que contém informações sobre data e a a hora.

MySQL recupera e mostra valores DATETIME no formato 'YYYY-MM-DD HH:MM:SS'.

A faixa suportada é de '1000-01-01 00:00:00' até '9999-12-31 23:59:59'.

Page 5: Banco de Dados II

DATEO tipo DATE é usado quando se necessita

apenas do valor da data, sem a parte da hora. MySQL recupera e mostra valores do tipo

DATA no formato 'YYYY-MM-DD'. A faixa suportada é de '1000-01-01' até '9999-

12-31'.

Page 6: Banco de Dados II

TimestampNumeral de 11 dígitos que representao número de

segundos passados desde 01 de janeiro de 1970.Os valores TIMESTAMP não podem ser anteriores a

1970 ou posteriores a 2037. Isto significa que datas como '1968-01-01', são

permitidas como valores DATETIME ou DATE, mas não são válidas para valores TIMESTAMP e serão convertidas para 0 se atribuídas para tais objetos.

DATETIME, DATE, e TIMESTAMP podem ter o mesmo formato, mas não tem a mesa faixa de valores.

Page 7: Banco de Dados II

Stored ProceduresConjunto 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.

Page 8: Banco de Dados II

Procedimentos armazenados ou stored routinesSão programas armazenados no

servidor, pré-compilados, chamados de forma explícita para executar alguma lógica de manipulação de dados, podendo retornar ou não algum valor".

Estão disponíveis exatamente desde a versão 5.0 do SGBD MySQL.

Page 9: Banco de Dados II

Stored Procedures - LocalizaçãoSão inseridos em uma tabela chamada

ROUTINES no banco de dados INFORMATION_SCHEMA, que é o

dicionário de dados do MySQL.

Page 10: Banco de Dados II

Como listarPara listarmos todos os stored routines

(Stored Procedure e Functions), no mysql client:

mysql> SELECT * FROM INFORMATION_SCHEMA.ROUTINES;

Page 11: Banco de Dados II

Sintaxe GeralCREATE PROCEDURE

proc_name([parameters, ...])[characteristics][BEGIN]

      corpo_da_rotina;

[END]

Page 12: Banco de Dados II

CREATE PROCEDURE proc_name([parameters, ...])[characteristics] proc_name: seu procedimento armazenado deve ter um nome, para

quando for chamado, podermos então usá-lo;

parameters: nessa parte do procedimento, informaremos os parâmetros da seguinte forma: [IN | OUT | INOUT] nome_parametro tipo_dado.

Existem 3 tipos de parâmetros em uma Stored Procedure no MySQL:IN, OUT e INOUT.

characteristics: as características do procedimento pode apresentar.

Questões de segurança, se é determinística ou não, qual a linguagem que estamos utilizando e se nosso procedimento modificará dados na banco de dados,

Page 13: Banco de Dados II

Tipos de ParâmetrosIN => de entrada, ou seja, um parâmetro

cujo seu valor será utilizado no interior do procedimento para produzir algum resultado;

OUT => retorna algo de dentro do procedimento para o lado externo, colocando os valores manipulados disponíveis na memória ou no conjunto de resultados;

INOUT => entrada e saída

Page 14: Banco de Dados II

EXEMPLO 1DELIMITER $$DROP PROCEDURE IF EXISTS

‘escola’.’proc_mensagem_oi’$$CREATE PROCEDURE ‘escola’.’proc_mensagem_oi’

( )BEGIN

SELECT ‘OI, MENSAGEM ENVIADA !’;END $$DELIMITER;

Page 15: Banco de Dados II

EXEMPLO 1 - chamadaBem, procedimento compilado basta

executarmos o procedimento com o seguinte comando:

CALL proc_mensagem_oi();OBS.: Após a versão 5.1.18, não é mais

necessário os parênteses caso o procedimento não receba parâmetros.

A resposta do procedimento será: “OI, MENSAGEM ENVIADA !’”

Page 16: Banco de Dados II

Exemplo 2 Exemplo:DELIMITER $$

DROP PROCEDURE IF EXISTS escola.pr_total $$CREATE PROCEDURE escola.pr_total ( OUT total INT)BEGINSELECT count(0) INTO totalFROM produtos;END $$

Page 17: Banco de Dados II

ChamadaExecutando a procedure via linha de comandoC:\ 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 pr_total(@teste); (Chamamos a procedure pr_total e armazenamos o resultado em teste.)

mysql> select @teste; (Exibimos o resultado. No exemplo acima, trazemos a quantidade de produtos cadastrados.)

Page 18: Banco de Dados II

FunctionsCaracterísticas: São definidas pelo usuário, Promovem agilidade no desenvolvimento de

sistemas, Economia na escrita de código, Lógica também por conta do banco de dados, Oferecem mais segurança aos componentes que

manipulam dados e produzem informações, Facilitam a manutenção ,Minimizam o consumo de banda entre o servidor de

banco de dados MySQL e a sua aplicação.

Page 19: Banco de Dados II

Exemplo 1mysql> DELIMITER // mysql> CREATE FUNCTION palavra (texto

CHAR(20)) RETURNS CHAR(50) -> RETURN CONCAT('Voce digitou:

',texto,' !!!'); -> // mysql> DELIMITER ;

Page 20: Banco de Dados II

Chamando funçãomysql> SELECT palavra('oi');

Voce digitou: oi !!!

Page 21: Banco de Dados II

Exemplo 2Tabela com os nomes dos alunos de uma

disciplina com as notas de quatro bimestres, mostrando a média final.

mysql> CREATE TABLE notas(aluno VARCHAR(10), nota1 INT, nota2 INT, nota3 INT, nota4 INT);

Insira valores nesta tabela. mysql> INSERT INTO notas VALUES('Maria', 10,

9, 10, 10); mysql> INSERT INTO notas VALUES('Pedro', 5, 2, 3, 4);

Page 22: Banco de Dados II

Exemplo - Funçãomysql> DELIMITER // mysql> CREATE FUNCTION media (nome VARCHAR(10)) -> RETURNS FLOAT -> DETERMINISTIC –> BEGIN -> DECLARE n1,n2,n3,n4 INT; -> DECLARE med FLOAT; -> SELECT nota1,nota2,nota3,nota4 INTO n1,n2,n3,n4 FROM

notas WHERE aluno = nome; -> SET med = (n1+n2+n3+n4)/4; -> RETURN med; -> END -> // mysql> DELIMITER ;

Page 23: Banco de Dados II

Chamandomysql> SELECT media('Maria'); media('Maria') 9.75

mysql> SELECT media('Pedro'); media('Pedro’)3.5

Page 24: Banco de Dados II

ExercícioPrá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: Conta

Prática 2 – Exercício 3 – Stored Procedure

Page 25: Banco de Dados II

BibliografiaGuia de referencia MySql 5.0, disponível em

Mysql.comWagner Bianchi,Imasters.com, Mysql 5.