Está en la página 1de 20

12

Creacin de Vistas

Copyright Oracle Corporation. All rights reserved.

Objetivos
Al completar esta leccin, debera ser capaz de hacer lo siguiente:

Describir una Vista


Crear una vista Recupera datos a travs de una vista Alterar la definicin de una vista Insertar, modificar y borrar datos a travs de una vista Eliminacin de vistas
12-2
Copyright Oracle Corporation. All rights reserved.

Objetos de la Base de Datos


Objeto
Tabla

Descripcin
Unidad bsica de almacenamiento; compuesta de registros y columnas.

Vista

Lgicamente representa un subconjunto de una o ms tablas.

Secuencia Indice Sinnimo

Genera valores para claves primarias. Mejoran el rendimiento de algunas consultas Da nombres alternativos a los objetos.

12-3

Copyright Oracle Corporation. All rights reserved.

Qu es una Vista?
EMP Table
EMPNO ENAME JOB JOB MGR HIREDATE SAL SAL COMM COMM DEPTNO ----- ------- --------- ----- --------- ----- ----- ------DEPTNO

----7839 KING --------PRESIDENT --------- ---- 17-NOV-81 --------- -----5000 ----- -----10
-7698 BLAKE 7839 7782 KING CLARK 10 7566 JONES MANAGER MANAGER 7839 01-MAY-81 7839 02-APR-81 2850 2450 5000 2975 1250 1500 1400 300 1600 300 30 10 20 30 30 MANAGER PRESIDENT 7839 17-NOV-81 09-JUN-81

7782 7654 CLARK MARTIN MANAGER 7698 09-JUN-81 7839 28-SEP-81 EMPVU10 ViewSALESMAN 10 7499 ALLEN SALESMAN 7698 20-FEB-81 EMPNO 7844 ENAME JOB 7782 MILLER TURNER SALESMAN CLERK 7698 23-JAN-82 08-SEP-81 ------ 7934 -----------------10 7900 JAMES CLERK 7698 03-DEC-81 7839 7566 KING PRESIDENT 7521 JONES WARD SALESMAN MANAGER 7698 02-APR-81 7839 22-FEB-81 7902 FORD ANALYST 7566 03-DEC-81 7782 20 CLARK MANAGER 7369 SCOTT SMITH CLERK ANALYST 7902 09-DEC-82 7566 17-DEC-80 7934 7788 MILLER CLERK 20 7788 SCOTT ANALYST 7566 09-DEC-82 7782 23-JAN-82 7902 17-DEC-80 7566 03-DEC-81

1500 1300
950 1250 2975 3000 800 3000 3000

0
500

30
30 30 20 20 20

7876 7876 ADAMS


20 7934 MILLER 7369 20 7902 FORD SMITH

CLERK CLERK
CLERK CLERK ANALYST

7788 12-JAN-83

1100 1100
1300 800 3000

20
10

12-4

20 Copyright Oracle Corporation. All rights reserved. 7698 BLAKE MANAGER 7839 01-MAY-81

2850

Por qu Usar Vistas?


Para restringir el acceso a la B.D. Para realizar consultas complejas fcilmente Para la indenpendencia de los datos Para presentar diferentes vistas de los mismos datos

12-5

Copyright Oracle Corporation. All rights reserved.

Vistas Simples y Vistas Complejas


Caracterstica Complejas N de Tablas Vis. Simples Vis. Una Una o ms S No S

Contiene funciones No Contiene grup. de datos

12-6

Copyright Oracle Corporation. All rights reserved.

Creacin de una Vista


Puede incluir una subconsulta dentro de la sentencia CREATE VIEW.
CREATE [OR REPLACE] [FORCE|NOFORCE] VIEW view [(alias[, alias]...)] AS subquery [WITH CHECK OPTION [CONSTRAINT constraint]] [WITH READ ONLY]

La subconsulta puede contener una SELECT compleja. A partir de la v 9i la subconsulta puede contener la clasula ORDER BY, en este caso la vista se considera compleja y no permite inserciones.
12-7
Copyright Oracle Corporation. All rights reserved.

Creacin de una Vista


Cree una vista, EMPVU10, que contenga detalles de los empleados del dpto. 10
SQL> 2 4 5 View CREATE VIEW AS SELECT FROM WHERE created. empvu10 empno, ename, job emp deptno = 10;

Describa la estructura de la vista, usando el comando DESCRIBE de SQL*Plus.


SQL> DESCRIBE empvu10
Copyright Oracle Corporation. All rights reserved.

12-8

Creacin de una Vista


Cree una vista usando alias de columna en la subconsulta.
SQL> 2 3 4 5 View CREATE VIEW AS SELECT FROM WHERE created. salvu30 empno EMPLOYEE_NUMBER, ename NAME, sal SALARY emp deptno = 30;

Seleccione las columnas de esta vista, haciendo uso del nombre del alias.

12-9

Copyright Oracle Corporation. All rights reserved.

Recuperando Datos de una Vista


SQL> 2 SELECT * FROM salvu30; NAME SALARY ---------- --------BLAKE 2850 MARTIN 1250 ALLEN 1600 TURNER 1500 JAMES 950 WARD 1250

EMPLOYEE_NUMBER --------------7698 7654 7499 7844 7900 7521

6 rows selected.

12-10

Copyright Oracle Corporation. All rights reserved.

Consulta a la Tabla del Diccionario de Datos, USER_VIEWS

SQL*Plus USER_VIEWS
SELECT * FROM empvu10;

EMPVU10
SELECT FROM WHERE empno, ename, job emp deptno = 10;

7839 7782 7934

KING PRESIDENT CLARK MANAGER MILLER CLERK

EMP

12-11

Copyright Oracle Corporation. All rights reserved.

Modificacin de una Vista


Modificar la vista EMPVU10 por medio de la clasula CREATE OR REPLACE VIEW. Aada un alias para cada columna.
SQL> 2 3 4 5 View CREATE OR REPLACE VIEW empvu10 (employee_number, employee_name, job_title) AS SELECT empno, ename, job FROM emp WHERE deptno = 10; created.

Los alias de columna en la clasula CREATE VIEW, debern de aparecer en el mismo orden que las columnas en la subconsulta.
12-12
Copyright Oracle Corporation. All rights reserved.

Creacin de una Vista Compleja


Cree una vista compleja que contenga funciones de grupo, para ver valores de dos tablas.
SQL> 2 3 4 5 6 7 View CREATE VIEW

AS SELECT
FROM WHERE GROUP BY created.

dept_sum_vu (name, minsal, maxsal, avgsal) d.dname, MIN(e.sal), MAX(e.sal), AVG(e.sal) emp e, dept d e.deptno = d.deptno d.dname;

12-13

Copyright Oracle Corporation. All rights reserved.

Reglas para Realizar Operaciones DML sobre Vistas

Se pueden realizar operaciones DML sobre vistas simples.

No se puede eliminar una fila si la vista contiene:

Funciones de grupo. Una clusula GROUP BY. El comando DISTINCT.


12-14
Copyright Oracle Corporation. All rights reserved.

Reglas para Realizar Operaciones DML sobre Vistas

No es posible modificar datos en la vista si la misma contiene:

Cualquiera de las condiciones anteriores. Columnas definidas por expresiones. La pseudocolumna ROWNUM.
No se puede agregar datos si la vista contiene:

Cualquiera de las condiciones anteriores. Cualquier columna NOT NULL no includa


por la vista.
12-15
Copyright Oracle Corporation. All rights reserved.

La Clasula WITH CHECK OPTION

Asegura que un comando DML sobre la vista mantiene el dominio de la misma.


CREATE OR REPLACE VIEW empvu20 AS SELECT * FROM emp WHERE deptno = 20 WITH CHECK OPTION CONSTRAINT empvu20_ck; created.

SQL> 2 3 4 5 View

Si se intenta cambiar el nmero de departamento para cualquier fila, la sentencia fallar porque viola la restriccin de CHECK OPTION.
Copyright Oracle Corporation. All rights reserved.

12-16

Denegar Operaciones DML

Agregando la opcin WITH READ ONLY en la definicin de la vista, se asegura que no ocurran operaciones DML.
CREATE OR REPLACE VIEW empvu10 (employee_number, employee_name, job_title) AS SELECT empno, ename, job FROM emp WHERE deptno = 10 WITH READ ONLY; created.

SQL> 2 3 4 5 6 View

Si se intenta realizar una operacin DML sobre


cualquier fila en la vista, aparecer el error ORA-01732 del Oracle8 Server.
12-17
Copyright Oracle Corporation. All rights reserved.

Eliminacin de una Vista


Al Borrar una vista no perder los datos, porque la vista est basada en tablas subyacentes de la B.D.
DROP VIEW view;

SQL> DROP VIEW empvu10; View dropped.

12-18

Copyright Oracle Corporation. All rights reserved.

Resumen

Una vista se deriva de los datos de otras tablas u otras vistas. Una vista es como una ventana sobre los datos subyacentes. Una vista provee las siguientes ventajas:

Restriccin del acceso a los datos. Simplificacin de las consultas. Independencia de los datos. Permite varias visiones de los mismos datos. Puede ser eliminada sin borrar los datos
subyacentes.
12-19
Copyright Oracle Corporation. All rights reserved.

Visin General de la Prctica



Crear una vista simple. Crear una vista compleja. Crear una vista con una restriccin check. Intentar modificar datos en una vista. Mostrar definiciones de una vista. Eliminar vistas.

12-20

Copyright Oracle Corporation. All rights reserved.

También podría gustarte