12 Creación de Vistas Copyright Oracle Corporation, 1998. All rights reserved.
Objetivos Al completar esta lección, debería a ser capaz de hacer lo siguiente: Describir una Vista Crear una vista Recupera datos a través de una vista Alterar la definición de una vista Insertar, modificar y borrar datos a través de una vista Eliminación de vistas 12-2 Copyright Oracle Corporation, 1998. All rights reserved.
Objetos de la Base de Datos Objecto Tabla Vista Secuencia Indice Sinónimo Descripción Unidad básica de almacenamiento; compuesta de registros y columnas. Lógicamente representa un subconjunto de una o más tablas. Genera valores para claves primarias. Mejoran el rendimiento de algunas consultas Da nombres alternativos a los objetos. 12-3 Copyright Oracle Corporation, 1998. All rights reserved.
Qué es una Vista? EMP Table EMPNO EMPNO ENAME ENAME JOB JOB MGR MGR HIREDATE SAL SAL COMM COMM DEPTNO ----- DEPTNO ----- ------- --------- ----- ----- --------- ----- ----- ----- ----- ------- ----- ----- 7839 7839 KING -------- KING PRESIDENT --------- ---- ---- 17-NOV-81 --------- ------ 5000 5000 ----- ----- ------ 10 10-7698 7698 BLAKE BLAKE MANAGER 7839 7839 01-MAY-81 2850 2850 30 30 7839 7839 7782 7782 CLARK KING CLARK KING MANAGER PRESIDENT 7839 7839 09-JUN-81 17-NOV-81 2450 2450 5000 5000 10 10 10 10 7566 7566 JONES JONES MANAGER 7839 7839 02-APR-81 2975 2975 20 20 EMPVU10 7782 7782 7654 7654 MARTIN CLARK CLARK View SALESMAN MANAGER 7698 7839 7698 7839 28-SEP-81 09-JUN-81 1250 1250 1500 1500 1400 1400 300 300 30 30 10 10 7499 7499 ALLEN ALLEN SALESMAN 7698 7698 20-FEB-81 1600 1600 300 300 30 30 EMPNO 7934 7844 ENAME 7934 7844 TURNER MILLER SALESMAN CLERK JOB CLERK 7698 7782 7698 7782 08-SEP-81 23-JAN-82 1500 1500 1300 0 30 ------ -------- ----------- 1300 30 10 10 7900 7900 JAMES JAMES CLERK CLERK 7698 7698 03-DEC-81 950 950 30 30 7839 KING PRESIDENT 7566 7566 7521 7521 WARD JONES WARD JONES SALESMAN MANAGER 7698 7839 7698 7839 22-FEB-81 02-APR-81 1250 1250 2975 2975 500 500 30 30 7782 20 20 7902 CLARK 7902 FORD FORD ANALYST MANAGER 7566 7566 03-DEC-81 3000 3000 20 20 7788 7788 7369 7369 SMITH SCOTT SMITH SCOTT CLERK CLERK ANALYST 7902 7566 7902 7566 17-DEC-80 09-DEC-82 800 3000 800 3000 20 7934 MILLER CLERK 20 20 20 7788 7788 SCOTT SCOTT ANALYST 7566 7566 09-DEC-82 3000 3000 20 20 7876 7876 ADAMS ADAMS CLERK CLERK 7788 7788 12-JAN-83 1100 1100 20 20 20 20 7934 7934 MILLER CLERK CLERK 7782 7782 23-JAN-82 1300 1300 10 10 7369 7369 SMITH SMITH CLERK CLERK 7902 7902 17-DEC-80 800 800 20 20 7902 7902 FORD FORD ANALYST 7566 7566 03-DEC-81 3000 3000 12-4 20 20 Copyright Oracle Corporation, 1998. All rights reserved. 7698 7698 BLAKE BLAKE MANAGER 7839 7839 01-MAY-81 2850 2850 30 30
Por qué Usar Vistas? Para restringir el acceso a la B.D. Para ralizar consultas complejas fácilmente Para la indenpendencia de los datos Para presentar diferentes vistas de los mismos datos 12-5 Copyright Oracle Corporation, 1998. All rights reserved.
Vistas Simples y Vistas Complejas Característica Vis. Simples Vis. Complejas Nº de Tablas Una Una o más Contiene funciones No Sí Contiene grup. de datos No DML a través de la vista Sí Sí No siempre 12-6 Copyright Oracle Corporation, 1998. All rights reserved.
Creación de una Vista Puede incluir una subconsulta dentro de la sentencia CREATE VIEW. CREATE [OR REPLACE] [FORCE NOFORCE] VIEW view [(alias[, alias]...)] AS AS subquery [WITH CHECK OPTION [CONSTRAINT constraint]] [WITH READ ONLY] La subconsulta puede contener una SELECT compleja. La subconsulta no puede contener la claúsula ORDER BY. 12-7 Copyright Oracle Corporation, 1998. All rights reserved.
Creación de una Vista Cree una vista, EMPVU10, que contenga detalles de los empleados del dpto. 10 SQL> CREATE VIEW empvu10 2 AS SELECT empno, ename, job 4 FROM emp 5 WHERE deptno = 10; View created. Describa la estructura de la vista, usando el comando DESCRIBE de SQL*Plus. SQL> DESCRIBE empvu10 12-8 Copyright Oracle Corporation, 1998. All rights reserved.
Creación de una Vista Cree una vista usando alias de columna en la subconsulta. SQL> CREATE VIEW salvu30 2 AS SELECT empno EMPLOYEE_NUMBER, ename NAME, 3 sal SALARY 4 FROM emp 5 WHERE deptno = 30; View created. Seleccione las columnas de esta vista, haciendo uso del nombre del alias. 12-9 Copyright Oracle Corporation, 1998. All rights reserved.
Recuperando Datos de una Vista SQL> SELECT * 2 FROM salvu30; 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. 12-10 Copyright Oracle Corporation, 1998. All rights reserved.
Consulta a la Tabla del Diccionario de Datos, USER_VIEWS SQL*Plus SELECT * FROM empvu10; 7839 KING PRESIDENT 7782 CLARK MANAGER 7934 MILLER CLERK USER_VIEWS EMPVU10 SELECT empno, ename, job FROM emp WHERE deptno = 10; EMP 12-11 Copyright Oracle Corporation, 1998. All rights reserved.
Modificación de una Vista Modificar la vista EMPVU10 por medio de la claúsula CREATE OR REPLACE VIEW. Añada un alias para cada columna. 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. Los alias de columna en la claúsula CREATE VIEW, deberán de aparecer en el mismo orden que las columnas en la subconsulta. 12-12 Copyright Oracle Corporation, 1998. All rights reserved.
Creación de una Vista Compleja Cree una vista compleja que contenga funciones de grupo, para ver valores de dos tablas. 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. 12-13 Copyright Oracle Corporation, 1998. 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 cláusula GROUP BY. El comando DISTINCT. 12-14 Copyright Oracle Corporation, 1998. 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 incluída por la vista. 12-15 Copyright Oracle Corporation, 1998. All rights reserved.
La Claúsula WITH CHECK OPTION Asegura que un comando DML sobre la vista mantiene el dominio de la misma. 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. Si se intenta cambiar el número n de departamento para cualquier fila, la sentencia fallará porque viola la restricción n de CHECK OPTION. 12-16 Copyright Oracle Corporation, 1998. All rights reserved.
Denegar Operaciones DML Agregando la opción n WITH READ ONLY en la definición n de la vista, se asegura que no ocurran operaciones DML. 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. Si se intenta realizar una operación n DML sobre cualquier fila en la vista, aparecerá el error ORA-01732 del Oracle8 Server. 12-17 Copyright Oracle Corporation, 1998. All rights reserved.
Eliminación 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, 1998. 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: Restricción n del acceso a los datos. Simplificación n 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, 1998. All rights reserved.
Visión General de la Práctica Crear una vista simple. Crear una vista compleja. Crear una vista con una restricción check. Intentar modificar datos en una vista. Mostrar definiciones de una vista. Eliminar vistas. 12-20 Copyright Oracle Corporation, 1998. All rights reserved.