CIÊNCIA E TECNOLOGIA DO RIO



Documentos relacionados
Comandos de Manipulação

Projeto de Banco de Dados

Introdução à Banco de Dados. Nathalia Sautchuk Patrício


SQL é uma linguagem de consulta que implementa as operações da álgebra relacional de forma bem amigável.

Ex.: INSERT INTO tmpautor (CDAUTOR, NMAUTOR) VALUES (1, Renato Araújo )

Tarefa Orientada 16 Vistas

Tarefa Orientada 18 Procedimentos armazenados

Linguagem SQL. Comandos Básicos

SQL Linguagem de Manipulação de Dados. Banco de Dados Profa. Dra. Cristina Dutra de Aguiar Ciferri

Procedimentos armazenados

SQL. SQL (Structured Query Language) Comando CREATE TABLE. SQL é uma linguagem de consulta que possibilita:

SQL Procedural. Josino Rodrigues Neto

Hugo Pedro Proença, 2007

UNINGÁ UNIDADE DE ENSINO SUPERIOR INGÁ FACULDADE INGÁ CIÊNCIA DA COMPUTAÇÃO CURSORS. Profº Erinaldo Sanches Nascimento

Banco de Dados. Marcio de Carvalho Victorino Exercícios SQL

Histórico de revisões

Projeto de Banco de Dados

EXEMPLOS DE COMANDOS NO SQL SERVER

Integridade dos Dados

PHP INTEGRAÇÃO COM MYSQL PARTE 1

Tarefa Orientada 19 Triggers

Álgebra Relacional. Conjunto de operações que usa uma ou duas relações como entrada e gera uma relação de saída. Operações básicas:

Exercícios de Lógica Exercícios de Fixação 08

IF685 Gerenciamento de Dados e Informação - Prof. Robson Fidalgo 1

SQL. Prof. Márcio Bueno.

Structured Query Language (SQL)

3) Palavra-chave distinct (select-from). Obter apenas os pibs distintos entre si.

Bases de Dados 2005/2006. Aula 5

COMPETÊNCIAS ESPECÍFICAS Compreender e utilizar a linguagem SQL, na construção e manutenção de uma base de dados.

BANCO DE DADOS Parte 4

Introdução às funções e procedimentos. SQL suporta funções e procedimentos úteis com tipos de dados específicos

BDII SQL Junção Revisão 8

SQL. Hélder Antero Amaral Nunes

Banco de Dados. Prof. Antonio

SQL Server Triggers Aprenda a utilizar triggers em views e auditar as colunas atualizadas em uma tabela

BANCO DE DADOS -INTRODUÇÃO AO SQL. Prof. Angelo Augusto Frozza, M.Sc.

SQL Structured Query Language

FEAP - Faculdade de Estudos Avançados do Pará PROFª LENA VEIGA PROJETOS DE BANCO DE DADOS UNIDADE V- SQL

PROGRAMAÇÃO EM BANCO DADOS Stored Procedure e Trigger

BANCO DE DADOS II Prof. Ricardo Rodrigues Barcelar

Aplicações - SQL. Banco de Dados: Teoria e Prática. André Santanchè e Luiz Celso Gomes Jr Instituto de Computação UNICAMP Agosto de 2013

Tarefa Orientada 14 Subconsultas

Uma expressão básica em SQL consiste em três cláusulas: select, from e where.

PROGRAMA. Objectivos Gerais :

PL/SQL. Profa. Dra. Cristina Dutra de Aguiar Ciferri. Laboratório de Bases de Dados PL/SQL

SQL TGD/JMB 1. Projecto de Bases de Dados. Linguagem SQL

Principais Comandos SQL Usados no MySql

Banco de Dados. Maurício Edgar Stivanello

Memória de aula Aulas 11 e 12

8. Outros tipos de Transação (Modo de Transação de Autoconfirmação e Modo Implícito)

Treinamento sobre SQL

Oracle 10g: SQL e PL/SQL

Roteiro 9 - SQL Básico: chave estrangeira, operadores de comparação e operadores booleanos

Memória de aula Semanas 15 e 16

Stored Procedures. Renata Viegas

Reforçando conceitos de SQL Estudo de Caso: Agenciamento de Corridas de Táxis

Pontifícia Universidade Católica do Rio Grande do Sul FACULDADE DE INFORMÁTICA PROGRAMA DE PÓS-GRADUAÇÃO EM CIÊNCIA DA COMPUTAÇÃO.

Ex.: INSERT INTO tmpautor (CDAUTOR, NMAUTOR) VALUES (1, Renato Araújo )

Tarefa Orientada 15 Manipulação de dados

PROCEDIMENTOS ARMAZENADOS (Stored Procedures)

Operação de União JOIN

AULA 2 INTERAÇÃO COM O BANCO DE DADOS

Básico da Linguagem SQL. Definição de Esquemas em SQL. SQL(Structured Query Language)

Introdução à Engenharia da Computação. Banco de Dados Professor Machado

f. Vocês podem selecionar todos os campos indicando-os, ou seja, sem usar * (boa prática) g. Muito relevante na manutenção de BD e de aplicações.

A Linguagem SQL. Introdução a Banco de Dados DCC 011

trigger insert, delete, update

Fundamentos do Sistema Gerenciador de Banco de Dados

PROGRAMAÇÃO EM BANCO DADOS Store Procedure e Trigger

A linguagem SQL

18/03/2012. Formação.

S Q L 31/03/2010. SQL - Structured Query Language Linguagem de Consulta Estruturada

ORACLE 11 G INTRODUÇÃO AO ORACLE, SQL,PL/SQL. Carga horária: 32 Horas

UNIVERSIDADE FEDERAL FLUMINENSE PÓLO UNIVERSITÁRIO DE RIO DAS OSTRAS FACULDADE FEDERAL DE RIO DAS OSTRAS CURSO DE CIÊNCIA DA COMPUTAÇÃO

S Q L 15/01/2013. Enfoques de SQL. Enfoques de SQL SQL. Usos de SQL. SQL - Origem/Histórico. Gerenciamento de Dados e Informação

Transações Seguras em Bancos de Dados (MySQL)

SQL Avançado Continuação. Renata Viegas

BANCO DE DADOS. info 3º ano. Prof. Diemesleno Souza Carvalho

ADMINISTRAÇÃO DE BANCO DE DADOS

O comando CREATE TABLE cria a tabela solicitada e obedece à seguinte forma:

BD SQL Server. Licenciatura em Engenharia Informática e Computação. Bases de Dados 2003/04

Banco de Dados Oracle 10g: Introdução à Linguagem SQL

Banco de dados 1. Linguagem DML SQL Select Avançado. Professor: Victor Hugo L. Lopes

O que são Bancos de Dados?

Gatilhos (Triggers) Prof. Márcio Bueno Elaborado por Maria Lígia B. Perkusich

Faculdade Pitágoras 16/08/2011. Curso Superior de Tecnologia: Banco de Dados Sistemas para Internet

Faculdade Pitágoras. Curso Superior de Tecnologia: Banco de Dados. Disciplina: Banco de Dados Prof.: Fernando Hadad Zaidan SQL

SQL S Q L. Introdução. Enfoques de SQL. SQL - Origem/Histórico. Usos de SQL. SQL - Vantagens. Banco de Dados. Fernando Fonseca Ana Carolina

Prof. Carlos Majer Aplicações Corporativas UNICID

SQL DML. Frederico D. Bortoloti

Laboratório de Banco de Dados II Aula 1. Stored Procedures

Laboratório 3. Base de Dados II 2008/2009

SQL (Structured Query Language)

SQL - Structured Query Language, ou Linguagem de Consulta Estruturada ou SQL

Sistemas de Informação

Auditoria de sistemas Deixe que seu banco de dados faça o trabalho por você

Oracle PL/SQL Overview

Transcrição:

INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DO RIO GRANDE DO NORTE BANCO DE DADOS II Docente: Éberton da Silva Marinho e-mail: ebertonsm@gmail.com eberton.marinho@ifrn.edu.br Curso de Tecnologia em Sistemas para Internet 12/11/2013

SUMÁRIO Consultas avançadas SQL Visões em SQL Stored Procedure em SQL

BANCO DE DADOS BASE

OPERAÇÕES COM CONJUNTOS union: seleciona os cupons fiscais i dos meses de setembro e novembro select * from cupom_fiscal where data between 2013-11-01 and 2013-11-30 union select * from cupom_fiscal where data between 2013-09-01 and 2013-09-30 Nota A união pode ser feito com tabelas e campos diferentes desde que a quantidade e os tipos sejam iguais entre as tabelas da união

SUBCONSULTAS ANINHADAS A SQL oferece um mecanismo para aninhar subconsultas in: testa t se um elemento está presente em algum conjunto not in: testa a ausência de um elemento em algum conjunto

SUBCONSULTAS ANINHADAS Exemplo SELECT DISTINCT nome FROM funcionario WHERE nome IN (SELECT f.nome FROM funcionario_caixa AS fc, funcionario AS f where f.cpf=fc.funcionario_cpf AND fc.data_fechamento IS NULL); SELECT DISTINCT nome FROM funcionario SELECT DISTINCT nome FROM funcionario WHERE nome NOT IN (SELECT f.nome FROM funcionario_caixa AS fc, funcionario AS f WHERE f.cpf=fc.funcionario_cpf AND fc.data_fechamento IS NULL);

COMPARAÇÃO DE CONJUNTOS > some: seleciona as tuplas que são maior que alguma das seleções do argumento some SELECT * FROM cupom_fiscal WHERE valor_total > SOME (select avg(valor_total) FROM cupom_fiscal); O mesmo se aplica as declarações >= some, < some, <= some, <> some

COMPARAÇÃO DE CONJUNTOS > all: seleciona as tuplas que são maior que alguma das seleções do argumento some SELECT * FROM cupom_fiscal WHERE valor_total > SOME (select avg(valor_total) FROM cupom_fiscal); O mesmo se aplica as declarações >= all, < all, <= all, <> all

TESTE DE RELAÇÕES VAZIAS exists: it retorna verdadeiro d se há pelo menos uma ocorrência na seleção SELECT * FROM cupom_fiscal AS c WHERE EXISTS ( SELECT * FROM item_cupom_fiscal AS icf WHERE if icf.produto_idproduto id d t = 1 AND c.ccf=icf.cupom_fiscal_ccf); f fi f) not exists retorna verdadeiro se não há ocorrências na seleção SELECT * FROM cupom_fiscal AS c WHERE NOT EXISTS ( SELECT * FROM item_cupom_fiscal AS icf WHERE icf.produto oduto_ idproduto = 1 AND c.ccf=icf.cupom_fiscal_ccf);

RELAÇÕES DERIVADAS Podemos expressar uma consulta na cláusula from SELECT * FROM (SELECT * FROM fi l SELECT * FROM (SELECT * FROM cupom_fiscal WHERE valor_total >= 100) AS cfm100 WHERE cfm100.data = '2013-11-11';

TIPOS E CONDIÇÕES DE JUNÇÃO Junção interna (INNER JOIN) SELECT * FROM cupom_fiscal AS cf INNER JOIN item_cupom_fiscal AS icf ON cf.ccf ccf = icf.cupom_fiscal_ccf; Junção externa esquerda (LEFT OUTER JOIN) SELECT * FROM cupom_fiscal AS cf LEFT OUTER JOIN item_cupom_fiscal AS icf ON cf.ccf = icf.cupom_fiscal_ccf;

TIPOS E CONDIÇÕES DE JUNÇÃO Junção externa direita (RIGHT OUTER JOIN) SELECT * FROM cupom_fiscal AS cf RIGHT OUTER JOIN item_cupom_fiscal AS icf ON cf.ccf ccf = icf.cupom_fiscal_ccf;

VISÃO Definição i Um meio de fornecer ao usuário um modelo de dados personalizado Uma visão pode esconder dados que um determinado usuário não precisa ver

VISÃO Vantagens Restringir quais colunas de uma tabela podem ser acessadas (leitura/modificação) Permite simplificar consultas complexas para os usuários finais Podem conter valores calculados ou valores de resumo Permite uma maior segurança as informações por permitir que apenas uma parte da informação seja exposta ao usuário

VISÃO Desvantagens Performance: As consultas baseadas em visões podem perder em velocidade, principalmente se a visão for baseada em outras visões Dependência entre tabelas: Se as tabelas da visão forem alteradas, a visão, muito provavelmente, deverá ser alterada também

VISÃO Como definimos uma visão? Definição de um SELECT que faz uma consulta sobre as tabelas A visão aparece no esquema de dados como se fosse uma tabela

VISÃO Sintaxe de criação CREATE VIEW <nome da visao> AS ( <instrução SELECT> )

VISÃO Exemplo CREATE VIEW cupons_novembro AS SELECT * FROM cupom_fiscal WHERE data BETWEEN '2013-11-01' AND '2013-11-30';

VISÃO Visualizar uma visão SHOW CREATE VIEW [database_name].[view_ name]; Exemplo SHOW CREATE VIEW cupons_novembro;

MODIFICANDO VISÕES Uma vez que uma visão é definida, podemos modificá-la com o comando alter view ALTER [ALGORITHM = {MERGE TEMPTABLE UNDEFINED}] VIEW [database_name]. [view_name] AS [SELECT statement]

APAGANDO VISÕES DROP VIEW [IF EXISTS] [database_name].[view_name]

STORE PROCEDURES Uma stored procedure é um segmento da SQL declarativa para armazenar funcionalidades que podem ser chamados através de triggers, outros stored procedures ou aplicações escritas em Java, C#, PHP, etc.

VANTAGENS Aumento da performance da aplicação Uma vez criada, a stored procedure é compilada e armazenada no banco de dados Reduz o tráfego de dados entre a aplicação e o banco de dados A aplicação só precisa chamar a stored pocedure Stored procedures são reusáveis por diversas linguagens de programação Não é preciso reescrever a mesma função em cada aplicação diferente, ela já está implementada no banco Podemos administrar as permissão de cada aplicação a stored procedure

DESVANTAGENS Se há um número muito grande stored procedures, o tamanho de memória utilizada para cada conexão aumenta substancialmente Além disso, se você utilizar um grande número de operações lógicas dentro do stored procedure, o uso da cpu também vai aumentar, pois o servidor de banco de dados não foi projetado para trabalhar com operações lógicas Difícil debugar stored procedures Não é fácil desenvolver e manter stored procedures e alinhá-los com as necessidades das aplicações

STORED PROCEDURE Declarando uma stored procedure DELIMITER // CREATE PROCEDURE pegartodosprodutos() BEGIN SELECT * FROM produto; END // DELIMITER ;

STORED PROCEDURE Chamando uma stored procedure CALL STORED_PROCEDURE_NAME(); CALL pegartodosprodutos();

VARIÁVEIS EM STORED PROCEDURES Declarando variáveis DECLARE variable_name datatype(size) DEFAULT default_value; Exemplos DECLARE total_sale INT DEFAULT 0; DECLARE x, y INT DEFAULT 0; Atribuindo valores Exemplos DECLARE total_count INT DEFAULT 0 SET total_count = 10;

ESCOPO DE VARIÁVEL A variável tem escopo da store procedure onde ela foi declarada Se a variável for precedida do caracter @, ela tem escopo de sessão e estará fora do escopo quando a sessão terminar

PARÂMETROS EM STORED PROCEDURES A maioria i das stored procedures que definimos i necessitam de parâmetros Os parâmetros podem ser de entrada (IN), saída (OUT) ou entrada e saída (INOUT) IN Quem chama passa argumentos para a stored procedure Os parâmetros são passados por valor OUT: O valor da variável pode ser alterado dentro do stored procedure. e Este valor é repassado ado para a a variável de saída (OUT) quando o stored procedure termina O valor inicial da variável OUT não pode ser acessada INOUT: É uma junção das características do IN e do OUT

PARÂMETROS EM STORED PROCEDURES Exemplo com IN DELIMITER // CREATE PROCEDURE pegarcuponspordata( IN pdata date) BEGIN SELECT * FROM cupom_fiscal WHERE data = pdata; END // DELIMITER ; CALL pegarcuponspordata('2013-11-11');

PARÂMETROS EM STORED PROCEDURES Exemplo com OUT DELIMITER $$ CREATE PROCEDURE qtdcuponspordata(in t pdata DATE, OUT pqtd INT) BEGIN select count(valor_total) into pqtd from cupom_fiscal where data = pdata; END $$ DELIMITER ; CALL qtdcuponspordata('2013-11-11', @qtd1); select @qtd1;

PARÂMETROS EM STORED PROCEDURES Exemplo INOUT DELIMITER $$ CREATE PROCEDURE set_counter(inout count INT(4),IN inc INT(4)) BEGIN SET count = count + inc; END $$ DELIMITER ; SET @counter = 1; CALL set_counter(@counter,1); SELECT @counter; CALL set_counter(@counter,5); SELECT @counter;

DECLARAÇÃO IF Sintaxe da declaração IF IF if_expression THEN commands [ELSEIF elseif_expression i THEN commands] [ELSE commands] END IF;

DECLARAÇÃO IF Exemplo DELIMITER // CREATE PROCEDURE pegarsituacaocaixa( IN codcaixa INT, IN codfunc VARCHAR(20), OUT situacao VARCHAR(50)) BEGIN DECLARE ABERTO int; DECLARE valor_cf, valor_fc, valor_ac double; SELECT data_fechamento IS NULL INTO aberto FROM funcionario_caixa WHERE caixa_idcaixa=codcaixa and funcionario_cpf like codfunc; SELECT SUM(valor_total) INTO valor_cf from funcionario_caixa AS fc, cupom_fiscal AS cf where caixa_idcaixa=codcaixa AND funcionario_cpf like codfunc AND fc.idfuncionario_caixa = cf.funcionario_caixa_idfuncionario_caixa; funcionario caixa idfuncionario caixa; SELECT valor_abertura INTO valor_ac from funcionario_caixa WHERE caixa_idcaixa=codcaixa AND funcionario_cpf like codfunc;

DECLARAÇÃO IF SELECT valor_fechamento INTO valor_fc from funcionario_caixa i i where caixa_idcaixa=codcaixa AND funcionario_cpf LIKE codfunc; IF(aberto = 1) THEN SET situacao = 'ABERTO'; ELSEIF ((valor_fc - valor_ac) <> valor_cf) THEN SET situacao = 'FECHADO_INCONSISTENTE'; ELSE SET situacao = 'FECHADO'; END IF; END // DELIMITER ;

DECLARAÇÃO IF CALL pegarsituacaocaixa(1, '200', @sit); select @sit;

DECLARAÇÃO CASE CASE WHEN condition_1 THEN commands WHEN condition_2 THEN commands... ELSE commands END CASE;

DECLARAÇÃO CASE Exemplo DELIMITER $$ CREATE PROCEDURE getmensagemsituacaocaixa( in situ varchar(40), out msg varchar(100)) BEGIN CASE situ WHEN 'ABERTO' THEN SET msg = 'O caixa ainda se encontra ABERTO'; WHEN 'FECHADO_ INCONSISTENTE' THEN SET msg = 'O caixa se encontra FECHADO COM INCONSITÊNCIAS'; WHEN 'FECHADO' THEN SET msg = 'O caixa se encontra FECHADO'; ELSE SET msg = 'OPÇÃO INVÁLIDA'; END CASE; END $$ DELIMITER ;

DÚVIDAS e-mail: ebertonsm@gmail.com eberton.marinho@ifrn.edu.br Endereço eletrônico da disciplina: http://docente.ifrn.edu.br/ebertonmarinho 39