Você está na página 1de 25

Programação em Banco

de Dados
Prof. Fábio Storck
Views

Views (Visões)

2
Views
 É uma “tabela virtual” criada a partir de uma consulta, para
representar uma determinada visão dos dados.

 Uma view pode ser consultada da mesma forma que uma tabela,
mas sua atualização está sujeita a certas regras.

 Embora consigamos visualizar os registros através da view, os


registros retornados estão armazenados nas respectivas tabelas.

3
Views
 Para que utilizar views:
 Definir a percepção que um usuário ou aplicação possui dos
dados

 Simplificar a construção de consultas, definindo consultas


frequentes ou complexas

 Possibilitar a visualização de maneira diferenciada dos mesmos


dados

 Restringir o acesso aos dados: um usuário que não possua


acesso às tabelas utilizadas na visão poderá consultá-las se
possuir acesso à view 4
Views
 Criando views – exemplo:

CREATE VIEW vw_empregado


AS
SELECT
p.PrimeiroNome,
d.IDEquipe,
d.DataContratacao
FROM
Professores P
JOIN Disciplina D ON D.IDProf = P.IDProf;

 Selecionando views – exemplo:

Select * from vw_empregado;


5
Views
 Alterando views – exemplo:

ALTER VIEW vw_empregado


AS
SELECT
p.PrimeiroNome,
p.Sobrenome,
d.IDEquipe,
d.DataContratacao
FROM
Professores P
JOIN Disciplina D ON D.IDProf = P.IDProf;

 Excluindo views – exemplo:

DROP VIEW vw_empregado

6
Stored Procedure

STORED PROCEDURES /
PROCEDIMENTOS
ARMAZENADOS

7
Stored Procedure
 Stored Procedures nada mais são do que um conjunto de
instruções SQL que são executadas dentro do banco de dados. É
como escrever um programa dentro do próprio banco de dados
para executar tudo lá dentro.

 Podemos conceituar Procedures ou Stored Procedures


(procedimentos armazenados) como blocos de comandos SQL
agrupados como uma unidade que executam um conjunto de
operações e tarefas relacionadas.

 Stored Procedures são procedimentos executados no servidor, e


precisa ser explicitamente invocada em um programa, e não é
executada automaticamente.

8
Stored Procedure
 São códigos armazenados no servidor que podem ser executados a
qualquer momento

 Uma stored procedure pode receber e enviar parâmetros de/para


uma aplicação

 São armazenadas pré-compiladas, o que melhora sua performance


de execução

9
Stored Procedure
 Sintaxe:

CREATE PROCEDURE <nome_procedure>


(parametro<tipo>[parametro <tipo>] //parâmetros
AS
BEGIN
<bloco de comandos>
END;

10
Stored Procedure
 Exemplo:

CREATE PROC Departments_Members()


SELECT Dep_Name, COUNT(Emp_ID)
NumberOfMember
FROM Departments D, Employees E
WHERE D.Dep_ID = E.Dep_ID
GROUP BY Dep_Name

Executando:

Execute Departments_Members

call Departments_Members (mysql)

11
Stored Procedure
 Exemplo (recebendo parâmetro):

CREATE PROCEDURE sp_ObtemInventario (local


varchar(10))
SELECT produto, quantidade
FROM inventario
WHERE deposito = local;

 Executando uma stored procedure:


EXECUTE nome_procedure

call nome_procedure (mysql)

 Exemplo:
EXECUTE sp_ObtemInventario ‘Belo Horizonte’
12

call sp_ObtemInventario (Belo Horizonte)


Stored Procedure
 Comandos de decisão:

IF <teste>
BEGIN
Comandos
END
ELSE
BEGIN
Comandos
END

Declarar variáveis:

DECLARE @variavel tipo, @variavel tipo

13
Stored Procedure
 Comando de repetição

WHILE <teste>
BEGIN
Comandos
END

14
Stored Procedure
 Um exemplo mais completo:

CREATE PROCEDURE sp_retorna_quantidade


@estado char(2)
AS
BEGIN
DECLARE @quantidade INT

SELECT
@quantidade = count(*)
FROM
lojas
WHERE
UF_loja = @estado

RETURN @quantidade
END
15
Triggers

TRIGGERS / GATILHOS

16
Triggers
 Trigger é utilizada para poder colocar uma determinada regra de
negócio da aplicação.

 Os Triggers padrão são códigos que são disparadas


automaticamente quando uma operação como um:
- INSERT
- UPDATE
- DELETE

 Quando ocorre o disparo:


- BEFORE: antes da execução do comando;
- AFTER: depois da execução do comando;

 Aplicação:
- Segurança e Auditoria
- Integridade de dados
- Integridade referencial
- Replicação de dados
- Disparo de rotinas 17
Triggers
 Sintaxe:

CREATE TRIGGER <nome_trigger>


{ BEFORE | AFTER }
{ event [ OR event ... ] }
ON <nome_tabela>
{FOR EACH ROW<condição>}
BEGIN
<rotina>
END;

 Buscando o valor das colunas:

- Valor antigo  (:old)


- Valor novo  (:new)

18
Triggers
 Exemplo:

CREATE TRIGGER del_dependente


BEFORE
DELETE
ON FUNCIONARIO
FOR EACH ROW
DELETE FROM dependente
WHERE matfunc = :old.matfunc;

 Excluindo uma trigger:

Sintaxe: DROP TRIGGER <nome_trigger>;

Exemplo: DROP TRIGGER dependente;

19
Funções

Funções / Functions

20
Funções
 É um rotina armazenada que retorna um valor

 Não podem ser utilizadas para alterar dados em tabelas

 Podem ser chamadas por uma query, por exemplo

Semelhantes a funções internas

 Conteúdo semelhante a um procedimento armazenado

Referenciadas como uma view

21
Funções
 Sintaxe:

CREATE FUNCTION
nome
[ (@param 1 tipo1 [=valor_padrao1
RETURNS tipo_retorno
BEGIN
comandos
END

22
Funções
 Exemplo:

CREATE FUNCTION fn_CustomerNamesInRegion


( @RegionParameter INT )
RETURNS table
AS
RETURN (
SELECT *
FROM Sales.Customer
WHERE TerritoryID = @RegionParameter
)

 Chamando a função:

SELECT * FROM fn_CustomerNamesInRegion(1)

23
Funções
 Alterando funções:

ALTER FUNCTION fn_NewRegion


<Novo conteúdo de função>

 Descartando funções

DROP FUNCTION fn_NewRegion

24
Exercicios
CIDADE MORADOR
CODIGO NOME POPULACAO CODIGO NOME ENDERECO BAIRRO CODIGO IDADE
CIDADE CIDADE
1 Belo 3000000 1 Jose Rua A Cruzeiro 1 21
Horizonte 2 Joao Rua X Centro 2 49
2 Uberlândia 800000 3 Maria Rua F Norte 3 33
4 Manoel Rua D Serra 1 29
3 Uberaba 400000
5 Paulo Rua X Centro 3 55
1) Criar um banco, as 2 tabelas (considerar PK e FK) e inserir os dados acima.
2) Aumentar 1 ano, na idade dos moradores da rua x e que começam com a letra ‘J’ no nome.
3) Alterar a rua do Paulo, para rua Y.
4) Selecionar nome e endereço de quem mora na rua a, c, f, h, p ou x e tem idade entre 30 a 60 anos.
5) Selecionar a média de idade por bairro, onde a média dê acima de 30 anos, ordenado por bairro.
6) Selecionar o nome e a idade para quem possui a idade abaixo da média de idade.
7) Selecionar a quantidade de registros por bairro, ordenando por bairro.
8) Selecionar nome, bairro e cidade, para quem mora em cidade com mais 500000 habitantes.
9) Selecionar a média de idade por cidade.
10) Criar uma View (vw_local) selecionando nome, endereço e bairro dos moradores.
11) Selecionar a View (vw_local), somente para os moradores do centro.
12) Criar uma View (vw_join), selecionando nome, endereço, bairro, idade, cidade e população.
13) Selecionar a View (vw_join), somente para quem tem mais de 30 anos e mora em cidade com mais
de 600000 habitantes.
14) Apagar as 2 Views que foram criadas. - Apagar os dados das 2 tabelas e conferir.
15) Apagar as tabelas e conferir. - Apagar o banco e conferir.
25