La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

Copyright  Oracle Corporation, 1998. All rights reserved. 11 Creación de Vistas.

Presentaciones similares


Presentación del tema: "Copyright  Oracle Corporation, 1998. All rights reserved. 11 Creación de Vistas."— Transcripción de la presentación:

1 Copyright  Oracle Corporation, 1998. All rights reserved. 11 Creación de Vistas

2 11-2 Copyright  Oracle Corporation, 1998. All rights reserved. Objetivos Al completar esta lección, deberí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 Al completar esta lección, deberí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

3 11-3 Copyright  Oracle Corporation, 1998. All rights reserved. Objetos de la base de datos ObjectoDescripción TablaUnidad básica de almacenamiento; compuesta de registros y columnas. VistaLógicamente representa un subconjunto de una o más tablas. SecuenciaGenera valores para claves primarias. IndiceMejoran el rendimiento de algunas consultas SinónimoDa nombres alternativos a los objetos.

4 11-4 Copyright  Oracle Corporation, 1998. All rights reserved. ¿Qué es una vista? 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 EMP Table 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 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 EMPVU10 View EMPVU10 View

5 11-5 Copyright  Oracle Corporation, 1998. All rights reserved. ¿Por qué usar vistas? Para restringir el acceso a la BBDD. Para realizar consultas complejas fácilmente. Para la independencia de los datos. Para presentar diferentes vistas de los mismos datos. Para restringir el acceso a la BBDD. Para realizar consultas complejas fácilmente. Para la independencia de los datos. Para presentar diferentes vistas de los mismos datos.

6 11-6 Copyright  Oracle Corporation, 1998. All rights reserved. Vistas simples y vistas complejas CaracterísticaVis. SimplesVis. Complejas Nº de TablasUnaUna o más Contiene funcionesNoSí Contiene grup. de datosNoSí DML a través de la vista SíNo siempre CaracterísticaVis. SimplesVis. Complejas Nº de TablasUnaUna o más Contiene funcionesNoSí Contiene grup. de datosNoSí DML a través de la vista SíNo siempre

7 11-7 Copyright  Oracle Corporation, 1998. All rights reserved. Creación de una vista Puede incluir una subconsulta dentro de la sentencia CREATE VIEW. La subconsulta puede contener una SELECT compleja. La subconsulta no puede contener la claúsula ORDER BY. Puede incluir una subconsulta dentro de la sentencia CREATE VIEW. La subconsulta puede contener una SELECT compleja. La subconsulta no puede contener la claúsula ORDER BY. CREATE [OR REPLACE] [FORCE|NOFORCE] VIEW view [(alias[, alias]...)] AS subquery [WITH CHECK OPTION [CONSTRAINT constraint]] [WITH READ ONLY] CREATE [OR REPLACE] [FORCE|NOFORCE] VIEW view [(alias[, alias]...)] AS subquery [WITH CHECK OPTION [CONSTRAINT constraint]] [WITH READ ONLY]

8 11-8 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 Describa la estructura de la vista, usando el comando DESCRIBE de SQL*Plus. SQL> DESCRIBE empvu10 SQL> CREATE VIEW empvu10 2 AS SELECTempno, ename, job 4 FROMemp 5 WHEREdeptno = 10; View created.

9 11-9 Copyright  Oracle Corporation, 1998. All rights reserved. Creación de una vista Cree una vista usando alias de columna en la subconsulta. Seleccione las columnas de esta vista, haciendo uso del nombre del alias. Cree una vista usando alias de columna en la subconsulta. Seleccione las columnas de esta vista, haciendo uso del nombre del alias. SQL> CREATE VIEW salvu30 2 AS SELECTempno EMPLOYEE_NUMBER, ename NAME, 3sal SALARY 4 FROMemp 5 WHEREdeptno = 30; View created.

10 11-10 Copyright  Oracle Corporation, 1998. All rights reserved. Recuperando datos de una vista 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 FROMsalvu30;

11 11-11 Copyright  Oracle Corporation, 1998. All rights reserved. Consulta a la tabla del diccionario de datos, USER_VIEWS USER_VIEWS USER_VIEWS EMPVU10 SELECTempno, ename, job FROMemp WHEREdeptno = 10; USER_VIEWS USER_VIEWS EMPVU10 SELECTempno, ename, job FROMemp WHEREdeptno = 10; SQL*Plus SELECT * FROM empvu10; EMP 7839KINGPRESIDENT 7782CLARKMANAGER 7934MILLERCLERK

12 11-12 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. Los alias de columna en la claúsula CREATE VIEW, deberán de aparecer en el mismo orden que las columnas en la subconsulta. Modificar la vista EMPVU10 por medio de la claúsula CREATE OR REPLACE VIEW. Añada un alias para cada columna. Los alias de columna en la claúsula CREATE VIEW, deberán de aparecer en el mismo orden que las columnas en la subconsulta. SQL> CREATE OR REPLACE VIEW empvu10 2 (employee_number, employee_name, job_title) 3 AS SELECT empno, ename, job 4 FROMemp 5 WHEREdeptno = 10; View created.

13 11-13 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 VIEWdept_sum_vu 2 (name, minsal, maxsal, avgsal) 3 AS SELECTd.dname, MIN(e.sal), MAX(e.sal), 4AVG(e.sal) 5 FROMemp e, dept d 6 WHEREe.deptno = d.deptno 7 GROUP BY d.dname; View created.

14 11-14 Copyright  Oracle Corporation, 1998. All rights reserved. Reglas para realizar operaciones DML sobre vistas Se pueden realizar operaciones DML sobre vistas simples. Se pueden realizar operaciones DML sobre vistas simples. No se puede eliminar una fila si la vista contiene: No se puede eliminar una fila si la vista contiene: – Funciones de grupo. – Una cláusula GROUP BY. – El comando DISTINCT.

15 11-15 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: 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: No se puede agregar datos si la vista contiene: – Cualquiera de las condiciones anteriores. – Cualquier columna NOT NULL no incluída por la vista, de la tabla origen. No es posible modificar datos en la vista si la misma contiene: 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: No se puede agregar datos si la vista contiene: – Cualquiera de las condiciones anteriores. – Cualquier columna NOT NULL no incluída por la vista, de la tabla origen.

16 11-16 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.Asegura que un comando DML sobre la vista mantiene el dominio de la misma. Si se intenta cambiar el número de departamento para cualquier fila, la sentencia fallará porque viola la restricción de CHECK OPTION.Si se intenta cambiar el número de departamento para cualquier fila, la sentencia fallará porque viola la restricción de CHECK OPTION. Asegura que un comando DML sobre la vista mantiene el dominio de la misma.Asegura que un comando DML sobre la vista mantiene el dominio de la misma. Si se intenta cambiar el número de departamento para cualquier fila, la sentencia fallará porque viola la restricción de CHECK OPTION.Si se intenta cambiar el número de departamento para cualquier fila, la sentencia fallará porque viola la restricción de CHECK OPTION. SQL> CREATE OR REPLACE VIEW empvu20 2 AS SELECT* 3 FROMemp 4 WHEREdeptno = 20 5 WITH CHECK OPTION CONSTRAINT empvu20_ck; View created.

17 11-17 Copyright  Oracle Corporation, 1998. All rights reserved. Denegar operaciones DML Agregando la opción WITH READ ONLY en la definición de la vista, se asegura que no ocurran operaciones DML.Agregando la opción WITH READ ONLY en la definición de la vista, se asegura que no ocurran operaciones DML. Si se intenta realizar una operación DML sobre cualquier fila en la vista, mostrará error.Si se intenta realizar una operación DML sobre cualquier fila en la vista, mostrará error. Agregando la opción WITH READ ONLY en la definición de la vista, se asegura que no ocurran operaciones DML.Agregando la opción WITH READ ONLY en la definición de la vista, se asegura que no ocurran operaciones DML. Si se intenta realizar una operación DML sobre cualquier fila en la vista, mostrará error.Si se intenta realizar una operación DML sobre cualquier fila en la vista, mostrará error. SQL> CREATE OR REPLACE VIEW empvu10 2 (employee_number, employee_name, job_title) 3 AS SELECTempno, ename, job 4 FROMemp 5 WHEREdeptno = 10 6 WITH READ ONLY; View created.

18 11-18 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. SQL> DROP VIEW empvu10; View dropped. DROP VIEW view;

19 11-19 Copyright  Oracle Corporation, 1998. All rights reserved. Vistas en línea Una vista en línea es una subconsulta con un alias (o nombre de correlación) que puede utilizar dentro de una sentencia SQL. Una vista en línea es una subconsulta con un alias (o nombre de correlación) que puede utilizar dentro de una sentencia SQL. Una subconsulta especificada en la cláusula FROM de la consulta principal es un ejemplo de vista en línea. Una subconsulta especificada en la cláusula FROM de la consulta principal es un ejemplo de vista en línea. Una vista en línea no es un objeto de esquema. Una vista en línea no es un objeto de esquema. Una vista en línea es una subconsulta con un alias (o nombre de correlación) que puede utilizar dentro de una sentencia SQL. Una vista en línea es una subconsulta con un alias (o nombre de correlación) que puede utilizar dentro de una sentencia SQL. Una subconsulta especificada en la cláusula FROM de la consulta principal es un ejemplo de vista en línea. Una subconsulta especificada en la cláusula FROM de la consulta principal es un ejemplo de vista en línea. Una vista en línea no es un objeto de esquema. Una vista en línea no es un objeto de esquema.

20 11-20 Copyright  Oracle Corporation, 1998. All rights reserved. Vistas en línea SQL> SELECT a.last_name, b.maxsal FROM employees a, SELECT deparment_id, max(salary) maxsal FROM employees GROUP BY department_id) b WHERE a.department_id=b.deparment_id AND a.salary < b.maxsal;

21 11-21 Copyright  Oracle Corporation, 1998. All rights reserved. Resumen Una vista se deriva de los datos de otras tablas u otras vistas. 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 es como una ventana sobre los datos subyacentes. Una vista provee las siguientes ventajas: Una vista provee las siguientes ventajas: – Restricción del acceso a los datos. – Simplificación de las consultas. – Independencia de los datos. – Permite varias visiones de los mismos datos. – Puede ser eliminada sin borrar los datos subyacentes. Una vista se deriva de los datos de otras tablas u otras vistas. 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 es como una ventana sobre los datos subyacentes. Una vista provee las siguientes ventajas: Una vista provee las siguientes ventajas: – Restricción del acceso a los datos. – Simplificación de las consultas. – Independencia de los datos. – Permite varias visiones de los mismos datos. – Puede ser eliminada sin borrar los datos subyacentes.

22 11-22 Copyright  Oracle Corporation, 1998. All rights reserved. Visión general de la práctica Crear una vista simple. Crear una vista simple. Crear una vista compleja. Crear una vista compleja. Crear una vista con una restricción check. Crear una vista con una restricción check. Intentar modificar datos en una vista. Intentar modificar datos en una vista. Mostrar definiciones de una vista. Mostrar definiciones de una vista. Eliminar vistas. Eliminar vistas. Crear una vista simple. Crear una vista simple. Crear una vista compleja. Crear una vista compleja. Crear una vista con una restricción check. Crear una vista con una restricción check. Intentar modificar datos en una vista. Intentar modificar datos en una vista. Mostrar definiciones de una vista. Mostrar definiciones de una vista. Eliminar vistas. Eliminar vistas.


Descargar ppt "Copyright  Oracle Corporation, 1998. All rights reserved. 11 Creación de Vistas."

Presentaciones similares


Anuncios Google