criando views

26
Copyright Oracle Corporation, 1999. Todos os direitos reservados. 12 12 Criando Views

Upload: osvaldosan

Post on 15-Jun-2015

1.109 views

Category:

Documents


3 download

DESCRIPTION

banco de dados

TRANSCRIPT

Page 1: Criando Views

Copyright Oracle Corporation, 1999. Todos os direitos reservados.

1212

Criando ViewsCriando Views

Page 2: Criando Views

12-2 Copyright Oracle Corporation, 1999. Todos os direitos reservados.

ObjetivosObjetivos

Depois de completar esta lição, você poderá Depois de completar esta lição, você poderá fazer o seguinte:fazer o seguinte:

• Descrever uma view

• Criar uma view

• Recuperar dados através de uma view

• Alterar a definição de uma view

• Inserir, atualizar e deletar dados através de uma view

• Eliminar uma view

Depois de completar esta lição, você poderá Depois de completar esta lição, você poderá fazer o seguinte:fazer o seguinte:

• Descrever uma view

• Criar uma view

• Recuperar dados através de uma view

• Alterar a definição de uma view

• Inserir, atualizar e deletar dados através de uma view

• Eliminar uma view

Page 3: Criando Views

12-3 Copyright Oracle Corporation, 1999. Todos os direitos reservados.

ObjetivosObjetivos

Depois de completar esta lição, você poderá Depois de completar esta lição, você poderá fazer o seguinte:fazer o seguinte:

• Descrever uma view em linha

• Executar a Análise "Top-N"

Depois de completar esta lição, você poderá Depois de completar esta lição, você poderá fazer o seguinte:fazer o seguinte:

• Descrever uma view em linha

• Executar a Análise "Top-N"

Page 4: Criando Views

12-4 Copyright Oracle Corporation, 1999. Todos os direitos reservados.

Objetos de Banco de DadosObjetos de Banco de Dados

Descrição

Unidade básica de armazenamento; composto de

linhas e colunas

Representa logicamente subconjuntos de dados de

uma ou mais tabelas

Gera valores de chave primária

Melhora o desempenho de algumas consultas

Nome alternativo para um objeto

Objeto

Tabela

View

Seqüência

Índice

Sinônimo

Page 5: Criando Views

12-5 Copyright Oracle Corporation, 1999. Todos os direitos reservados.

O Que É uma View?O Que É uma View?

EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO

----- ------- --------- ----- --------- ----- ----- -------

7839 KING PRESIDENT 17-NOV-81 5000 10

7698 BLAKE MANAGER 7839 01-MAY-81 2850 30

7782 CLARK MANAGER 7839 09-JUN-81 2450 10

7566 JONES MANAGER 7839 02-APR-81 2975 20

7654 MARTIN SALESMAN 7698 28-SEP-81 1250 1400 30

7499 ALLEN SALESMAN 7698 20-FEB-81 1600 300 30

7844 TURNER SALESMAN 7698 08-SEP-81 1500 0 30

7900 JAMES CLERK 7698 03-DEC-81 950 30

7521 WARD SALESMAN 7698 22-FEB-81 1250 500 30

7902 FORD ANALYST 7566 03-DEC-81 3000 20

7369 SMITH CLERK 7902 17-DEC-80 800 20

7788 SCOTT ANALYST 7566 09-DEC-82 3000 20

7876 ADAMS CLERK 7788 12-JAN-83 1100 20

7934 MILLER CLERK 7782 23-JAN-82 1300 10

EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO

----- ------- --------- ----- --------- ----- ----- -------

7839 KING PRESIDENT 17-NOV-81 5000 10

7698 BLAKE MANAGER 7839 01-MAY-81 2850 30

7782 CLARK MANAGER 7839 09-JUN-81 2450 10

7566 JONES MANAGER 7839 02-APR-81 2975 20

7654 MARTIN SALESMAN 7698 28-SEP-81 1250 1400 30

7499 ALLEN SALESMAN 7698 20-FEB-81 1600 300 30

7844 TURNER SALESMAN 7698 08-SEP-81 1500 0 30

7900 JAMES CLERK 7698 03-DEC-81 950 30

7521 WARD SALESMAN 7698 22-FEB-81 1250 500 30

7902 FORD ANALYST 7566 03-DEC-81 3000 20

7369 SMITH CLERK 7902 17-DEC-80 800 20

7788 SCOTT ANALYST 7566 09-DEC-82 3000 20

7876 ADAMS CLERK 7788 12-JAN-83 1100 20

7934 MILLER CLERK 7782 23-JAN-82 1300 10

TabelaTabela EMP EMPEMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO

----- -------- --------- ---- --------- ------ ----- -------

7839 KING PRESIDENT 17-NOV-81 5000 10

7782 CLARK MANAGER 7839 09-JUN-81 1500 300 10

7934 MILLER CLERK 7782 23-JAN-82 1300 10

7566 JONES MANAGER 7839 02-APR-81 2975 20

7788 SCOTT ANALYST 7566 09-DEC-82 3000 20

7876 ADAMS CLERK 7788 12-JAN-83 1100 20

7369 SMITH CLERK 7902 17-DEC-80 800 20

7902 FORD ANALYST 7566 03-DEC-81 3000 20

7698 BLAKE MANAGER 7839 01-MAY-81 2850 30

7654 MARTIN SALESMAN 7698 28-SEP-81 1250 1400 30

7499 ALLEN SALESMAN 7698 20-FEB-81 1600 300 30

7844 TURNER SALESMAN 7698 08-SEP-81 1500 0 30

7900 JAMES CLERK 7698 03-DEC-81 950 30

7521 WARD SALESMAN 7698 22-FEB-81 1250 500 30

EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO

----- -------- --------- ---- --------- ------ ----- -------

7839 KING PRESIDENT 17-NOV-81 5000 10

7782 CLARK MANAGER 7839 09-JUN-81 1500 300 10

7934 MILLER CLERK 7782 23-JAN-82 1300 10

7566 JONES MANAGER 7839 02-APR-81 2975 20

7788 SCOTT ANALYST 7566 09-DEC-82 3000 20

7876 ADAMS CLERK 7788 12-JAN-83 1100 20

7369 SMITH CLERK 7902 17-DEC-80 800 20

7902 FORD ANALYST 7566 03-DEC-81 3000 20

7698 BLAKE MANAGER 7839 01-MAY-81 2850 30

7654 MARTIN SALESMAN 7698 28-SEP-81 1250 1400 30

7499 ALLEN SALESMAN 7698 20-FEB-81 1600 300 30

7844 TURNER SALESMAN 7698 08-SEP-81 1500 0 30

7900 JAMES CLERK 7698 03-DEC-81 950 30

7521 WARD SALESMAN 7698 22-FEB-81 1250 500 30

EMPNO ENAME JOB ------ -------- ----------- 7839 KING PRESIDENT 7782 CLARK MANAGER 7934 MILLER CLERK

View View EMPVU10EMPVU10

Page 6: Criando Views

12-6 Copyright Oracle Corporation, 1999. Todos os direitos reservados.

Por Que Usar Views?Por Que Usar Views?

• Para restringir o acesso a dados

• Para facilitar as consultas complexas

• Para permitir a independência dos dados

• Para apresentar diferentes views dos mesmos dados

• Para restringir o acesso a dados

• Para facilitar as consultas complexas

• Para permitir a independência dos dados

• Para apresentar diferentes views dos mesmos dados

Page 7: Criando Views

12-7 Copyright Oracle Corporation, 1999. Todos os direitos reservados.

Views Simples eViews ComplexasViews Simples e

Views Complexas

Recurso Views Simples Views Complexas

Número de tabelas Uma Uma ou mais

Contém funções Não Sim

Contém grupos de dados Não Sim

DML através da view Sim Nem sempre

Page 8: Criando Views

12-8 Copyright Oracle Corporation, 1999. Todos os direitos reservados.

Criando uma ViewCriando uma View• Embuta uma subconsulta na instrução CREATE VIEW.

• A subconsulta pode conter uma sintaxe SELECT complexa.

• A subconsulta não pode conter uma cláusula ORDER BY.

• Embuta uma subconsulta na instrução CREATE VIEW.

• A subconsulta pode conter uma sintaxe SELECT complexa.

• A subconsulta não pode conter uma cláusula ORDER BY.

View CREATE [OR REPLACE] [FORCE|NOFORCE] VIEW [(apelido[, apelido]...)]AS subconsulta[WITH CHECK OPTION [CONSTRAINT restrição]][WITH READ ONLY];

View CREATE [OR REPLACE] [FORCE|NOFORCE] VIEW [(apelido[, apelido]...)]AS subconsulta[WITH CHECK OPTION [CONSTRAINT restrição]][WITH READ ONLY];

Page 9: Criando Views

12-9 Copyright Oracle Corporation, 1999. Todos os direitos reservados.

Criando uma ViewCriando uma View

• Crie uma view, EMPVU10, que contenha detalhes sobre os funcionários no departamento 10.

• Crie uma view, EMPVU10, que contenha detalhes sobre os funcionários no departamento 10.

• Descreva a estrutura da view usando o comando DESCRIBE do SQL*Plus.

• Descreva a estrutura da view usando o comando DESCRIBE do SQL*Plus.

SQL> DESCRIBE empvu10SQL> DESCRIBE empvu10

SQL> CREATE VIEW empvu10 2 AS SELECT empno, ename, job 3 FROM emp 4 WHERE deptno = 10;View created.View created.

Page 10: Criando Views

12-10 Copyright Oracle Corporation, 1999. Todos os direitos reservados.

Criando uma ViewCriando uma View

• Crie uma view usando apelidos de coluna na subconsulta.

• Selecione as colunas a partir desta view pelos nomes de apelidos dados.

• Crie uma view usando apelidos de coluna na subconsulta.

• Selecione as colunas a partir desta view pelos nomes de apelidos dados.

SQL> CREATE VIEW salvu30 2 AS SELECT empno EMPLOYEE_NUMBER, ename NAME, 3 sal SALARY 4 FROM emp 5 WHERE deptno = 30;View created.View created.

Page 11: Criando Views

12-11 Copyright Oracle Corporation, 1999. Todos os direitos reservados.

Recuperando Dados de uma ViewRecuperando Dados de uma View

EMPLOYEE_NUMBER NAME SALARY--------------- ---------- --------- 7698 BLAKE 2850 7654 MARTIN 1250 7499 ALLEN 1600 7844 TURNER 1500 7900 JAMES 950 7521 WARD 1250

6 rows selected.

EMPLOYEE_NUMBER NAME SALARY--------------- ---------- --------- 7698 BLAKE 2850 7654 MARTIN 1250 7499 ALLEN 1600 7844 TURNER 1500 7900 JAMES 950 7521 WARD 1250

6 rows selected.

SQL> SELECT * 2 FROM salvu30;

Page 12: Criando Views

12-12 Copyright Oracle Corporation, 1999. Todos os direitos reservados.

Consultando uma ViewConsultando uma View

USER_VIEWSUSER_VIEWS EMPVU10EMPVU10SELECT empno, ename, jobFROM empWHERE deptno = 10;

USER_VIEWSUSER_VIEWS EMPVU10EMPVU10SELECT empno, ename, jobFROM empWHERE deptno = 10;

SQL*PlusSQL*Plus

SELECT *FROM empvu10;

EMP

7839 KING PRESIDENT7782 CLARK MANAGER7934 MILLER CLERK

Page 13: Criando Views

12-13 Copyright Oracle Corporation, 1999. Todos os direitos reservados.

Modificando uma ViewModificando uma View

• Modificar a view EMPVU10 usando a cláusula CREATE OR REPLACE VIEW. Adicionar um apelido para cada nome de coluna.

• Os apelidos de coluna na cláusula CREATE VIEW estão listados na mesma ordem que as colunas na subconsulta.

• Modificar a view EMPVU10 usando a cláusula CREATE OR REPLACE VIEW. Adicionar um apelido para cada nome de coluna.

• Os apelidos de coluna na cláusula CREATE VIEW estão listados na mesma ordem que as colunas na subconsulta.

SQL> CREATE OR REPLACE VIEW empvu10 2 (employee_number, employee_name, job_title) 3 AS SELECT empno, ename, job 4 FROM emp 5 WHERE deptno = 10;View created.View created.

Page 14: Criando Views

12-14 Copyright Oracle Corporation, 1999. Todos os direitos reservados.

Criando uma View ComplexaCriando uma View Complexa

Criar uma view complexa que contenha Criar uma view complexa que contenha funções de grupo para exibir os valores a funções de grupo para exibir os valores a partir de duas tabelas.partir de duas tabelas.

Criar uma view complexa que contenha Criar uma view complexa que contenha funções de grupo para exibir os valores a funções de grupo para exibir os valores a partir de duas tabelas.partir de duas tabelas.

SQL> CREATE VIEW dept_sum_vu 2 (name, minsal, maxsal, avgsal) 3 AS SELECT d.dname, MIN(e.sal), MAX(e.sal), 4 AVG(e.sal) 5 FROM emp e, dept d 6 WHERE e.deptno = d.deptno 7 GROUP BY d.dname;View created.View created.

Page 15: Criando Views

12-15 Copyright Oracle Corporation, 1999. Todos os direitos reservados.

Regras para Executar Operações DML em uma View

Regras para Executar Operações DML em uma View

• Você poderá executar as operações DML em views simples.

• Você não poderá remover uma linha se a view contiver:

– Funções de grupo

– Uma cláusula GROUP BY

– A palavra-chave DISTINCT

– A palavra-chave da pseudocoluna ROWNUM

• Você poderá executar as operações DML em views simples.

• Você não poderá remover uma linha se a view contiver:

– Funções de grupo

– Uma cláusula GROUP BY

– A palavra-chave DISTINCT

– A palavra-chave da pseudocoluna ROWNUM

Page 16: Criando Views

12-16 Copyright Oracle Corporation, 1999. Todos os direitos reservados.

Regras para Executar Operações DML em uma View

Regras para Executar Operações DML em uma View

• Você não poderá modificar dados em uma view se eles contiverem:– Uma das condições mencionadas no slide

anterior– Colunas definidas por expressões– A pseudocoluna ROWNUM

• Você não poderá adicionar dados se:

– A view contiver uma das condições mencionadas acima ou no slide anterior

– Houver colunas NOT NULL nas tabelas-base que não forem selecionadas pela view

• Você não poderá modificar dados em uma view se eles contiverem:– Uma das condições mencionadas no slide

anterior– Colunas definidas por expressões– A pseudocoluna ROWNUM

• Você não poderá adicionar dados se:

– A view contiver uma das condições mencionadas acima ou no slide anterior

– Houver colunas NOT NULL nas tabelas-base que não forem selecionadas pela view

Page 17: Criando Views

12-17 Copyright Oracle Corporation, 1999. Todos os direitos reservados.

Usando a Cláusula WITH CHECK OPTIONUsando a Cláusula

WITH CHECK OPTION• Você poderá garantir que a DML na view

continue no domínio da view usando a cláusula WITH CHECK OPTION.

• Você poderá garantir que a DML na view continue no domínio da view usando a cláusula WITH CHECK OPTION.

• Qualquer tentativa de alteração do número do departamento para qualquer linha na view falhará porque ela violará a restrição WITH CHECK OPTION.

• Qualquer tentativa de alteração do número do departamento para qualquer linha na view falhará porque ela violará a restrição WITH CHECK OPTION.

SQL> CREATE OR REPLACE VIEW empvu20 2 AS SELECT * 3 FROM emp 4 WHERE deptno = 20 5 WITH CHECK OPTION CONSTRAINT empvu20_ck;View created.View created.

Page 18: Criando Views

12-18 Copyright Oracle Corporation, 1999. Todos os direitos reservados.

Negando Operações DMLNegando Operações DML

• Você poderá assegurar que nenhuma operação DML ocorra através da adição da opção WITH READ ONLY à definição da sua view.

• Você poderá assegurar que nenhuma operação DML ocorra através da adição da opção WITH READ ONLY à definição da sua view.

SQL> CREATE OR REPLACE VIEW empvu10 2 (employee_number, employee_name, job_title) 3 AS SELECT empno, ename, job 4 FROM emp 5 WHERE deptno = 10 6 WITH READ ONLY;View created.View created.

• Qualquer tentativa de executar uma DML em uma linha na view resultará em erro no Oracle Server.

• Qualquer tentativa de executar uma DML em uma linha na view resultará em erro no Oracle Server.

Page 19: Criando Views

12-19 Copyright Oracle Corporation, 1999. Todos os direitos reservados.

Removendo uma ViewRemovendo uma View

Remover uma view sem perder dados porque Remover uma view sem perder dados porque uma view está baseada em tabelas uma view está baseada em tabelas subjacentes no banco de dados.subjacentes no banco de dados.

Remover uma view sem perder dados porque Remover uma view sem perder dados porque uma view está baseada em tabelas uma view está baseada em tabelas subjacentes no banco de dados.subjacentes no banco de dados.

SQL> DROP VIEW empvu10; View dropped.View dropped.

DROP VIEW view; DROP VIEW view;

Page 20: Criando Views

12-20 Copyright Oracle Corporation, 1999. Todos os direitos reservados.

Views Em LinhaViews Em Linha

• Uma view em linha é uma subconsulta subjacente com um apelido (nome de correlação) que pode ser usado em uma instrução SQL.

• Uma view em linha é similar ao uso de uma subconsulta nomeada na cláusula FROM da consulta principal.

• Uma view em linha não é um objeto de esquema.

• Uma view em linha é uma subconsulta subjacente com um apelido (nome de correlação) que pode ser usado em uma instrução SQL.

• Uma view em linha é similar ao uso de uma subconsulta nomeada na cláusula FROM da consulta principal.

• Uma view em linha não é um objeto de esquema.

Page 21: Criando Views

12-21 Copyright Oracle Corporation, 1999. Todos os direitos reservados.

Análise "Top-N"Análise "Top-N"

• As consultas Top-N pedem os maiores ou menores valores n de uma coluna.

– Quais são os dez produtos mais vendidos?

– Quais são os dez produtos menos vendidos?

• Tanto o conjunto dos maiores quanto dos menores valores são considerados consultas Top-N.

• As consultas Top-N pedem os maiores ou menores valores n de uma coluna.

– Quais são os dez produtos mais vendidos?

– Quais são os dez produtos menos vendidos?

• Tanto o conjunto dos maiores quanto dos menores valores são considerados consultas Top-N.

Page 22: Criando Views

12-22 Copyright Oracle Corporation, 1999. Todos os direitos reservados.

Executando a Análise "Top-N"Executando a Análise "Top-N"

A estrutura de nível mais elevado de uma A estrutura de nível mais elevado de uma consulta de análise Top-N é: consulta de análise Top-N é: A estrutura de nível mais elevado de uma A estrutura de nível mais elevado de uma consulta de análise Top-N é: consulta de análise Top-N é:

SQL> SELECT [column_list], ROWNUM 2 FROM (SELECT [column_list] FROM table 3 ORDER BY Top-N_column) 4 WHERE ROWNUM <= N

SQL> SELECT [column_list], ROWNUM 2 FROM (SELECT [column_list] FROM table 3 ORDER BY Top-N_column) 4 WHERE ROWNUM <= N

Page 23: Criando Views

12-23 Copyright Oracle Corporation, 1999. Todos os direitos reservados.

Exemplo de Análise "Top-N"Exemplo de Análise "Top-N"

Para exibir os nomes dos funcionários que Para exibir os nomes dos funcionários que recebem os três maiores salários e seus recebem os três maiores salários e seus nomes na tabela EMP.nomes na tabela EMP.

Para exibir os nomes dos funcionários que Para exibir os nomes dos funcionários que recebem os três maiores salários e seus recebem os três maiores salários e seus nomes na tabela EMP.nomes na tabela EMP.

SQL> SELECT 2 FROM (SELECT ename,sal FROM emp 3 ORDER BY sal DESC) 4 WHERE ROWNUM <= 3;

SQL> SELECT 2 FROM (SELECT ename,sal FROM emp 3 ORDER BY sal DESC) 4 WHERE ROWNUM <= 3;

ROWNUM as RANK, sal

ename,

RANK --------- 1 2 3

ENAME ---------- KING SCOTT FORD

SAL---------500030003000

Page 24: Criando Views

12-24 Copyright Oracle Corporation, 1999. Todos os direitos reservados.

SumárioSumário

• Uma view é criada a partir de dados em outras tabelas ou views.

• Uma view fornece todas as vantagens a seguir:

– Restringe o acesso a bancos de dados

– Simplifica as consultas

– Permite a independência de dados

– Exibe várias views dos mesmos dados

– Pode ser eliminada sem remover os dados subjacentes

• Uma view é criada a partir de dados em outras tabelas ou views.

• Uma view fornece todas as vantagens a seguir:

– Restringe o acesso a bancos de dados

– Simplifica as consultas

– Permite a independência de dados

– Exibe várias views dos mesmos dados

– Pode ser eliminada sem remover os dados subjacentes

Page 25: Criando Views

12-25 Copyright Oracle Corporation, 1999. Todos os direitos reservados.

SumárioSumário

• Uma view em linha é uma subconsulta com um nome apelido.

• As análises "Top-N" podem ser executadas usando-se:

– Subconsulta

– Consulta externa

• Uma view em linha é uma subconsulta com um nome apelido.

• As análises "Top-N" podem ser executadas usando-se:

– Subconsulta

– Consulta externa

Page 26: Criando Views

12-26 Copyright Oracle Corporation, 1999. Todos os direitos reservados.

Visão Geral do ExercícioVisão Geral do Exercício

• Criando uma view simples

• Criando uma view complexa

• Criando uma view com restrição de verificação

• Tentando modificar dados na view

• Exibindo definições de view

• Removendo views

• Criando uma view simples

• Criando uma view complexa

• Criando uma view com restrição de verificação

• Tentando modificar dados na view

• Exibindo definições de view

• Removendo views