Download - Criando Views
Copyright Oracle Corporation, 1999. Todos os direitos reservados.
1212
Criando ViewsCriando 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
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"
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
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
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
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
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];
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.
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.
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;
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
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.
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.
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
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
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.
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.
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;
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.
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.
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
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
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
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
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