copyright oracle corporation, 1998. all rights . · pdf file12-4 copyright oracle...

20
Copyright Oracle Corporation, 1998. All rights reserved. 12 12 Creación de Vistas Creación de Vistas

Upload: trinhnhi

Post on 01-Feb-2018

224 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: Copyright Oracle Corporation, 1998. All rights  . · PDF file12-4 Copyright Oracle Corporation, 1998. All rights reserved. ¿Qué es una Vista?

Copyright Oracle Corporation, 1998. All rights reserved.

1212

Creación de VistasCreación de Vistas

Page 2: Copyright Oracle Corporation, 1998. All rights  . · PDF file12-4 Copyright Oracle Corporation, 1998. All rights reserved. ¿Qué es una Vista?

12-2 Copyright Oracle Corporation, 1998. All rights reserved.

ObjetivosObjetivos

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 lecciAl completar esta lecci óón, debern, deber íía ser a ser capaz de hacer lo siguiente: 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

Page 3: Copyright Oracle Corporation, 1998. All rights  . · PDF file12-4 Copyright Oracle Corporation, 1998. All rights reserved. ¿Qué es una Vista?

12-3 Copyright Oracle Corporation, 1998. All rights reserved.

Objetos de la Base de DatosObjetos de la Base de Datos

Objecto Descripción

Tabla Unidad básica de almacenamiento;

compuesta de registros y columnas.

Vista Lógicamente representa un subconjunto de

una o más tablas.

Secuencia Genera valores para claves primarias.

Indice Mejoran el rendimiento de algunas consultas

Sinónimo Da nombres alternativos a los objetos.

Page 4: Copyright Oracle Corporation, 1998. All rights  . · PDF file12-4 Copyright Oracle Corporation, 1998. All rights reserved. ¿Qué es una Vista?

12-4 Copyright Oracle Corporation, 1998. All rights reserved.

¿Qué es una Vista?¿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 TableEMP TableEMPNO 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

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

EMPNO ENAME JOB ------ -------- -----------

7839 KING PRESIDENT7782 CLARK MANAGER7934 MILLER CLERK

EMPVU10 ViewEMPVU10 View

Page 5: Copyright Oracle Corporation, 1998. All rights  . · PDF file12-4 Copyright Oracle Corporation, 1998. All rights reserved. ¿Qué es una Vista?

12-5 Copyright Oracle Corporation, 1998. All rights reserved.

¿Por qu é Usar Vistas?¿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

• 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

Page 6: Copyright Oracle Corporation, 1998. All rights  . · PDF file12-4 Copyright Oracle Corporation, 1998. All rights reserved. ¿Qué es una Vista?

12-6 Copyright Oracle Corporation, 1998. All rights reserved.

Vistas Simples y Vistas ComplejasVistas 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 Sí

DML a través de la vista Sí No siempre

Page 7: Copyright Oracle Corporation, 1998. All rights  . · PDF file12-4 Copyright Oracle Corporation, 1998. All rights reserved. ¿Qué es una Vista?

12-7 Copyright Oracle Corporation, 1998. All rights reserved.

Creación de una VistaCreació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]

Page 8: Copyright Oracle Corporation, 1998. All rights  . · PDF file12-4 Copyright Oracle Corporation, 1998. All rights reserved. ¿Qué es una Vista?

12-8 Copyright Oracle Corporation, 1998. All rights reserved.

Creación de una VistaCreación de una Vista

• Cree una vista, EMPVU10, que contenga detalles de los empleados del dpto. 10

• 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.

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

SQL> DESCRIBE empvu10SQL> DESCRIBE empvu10

SQL> CREATE VIEW empvu102 AS SELECT empno, ename, job4 FROM emp5 WHERE deptno = 10;

View created.View created.

Page 9: Copyright Oracle Corporation, 1998. All rights  . · PDF file12-4 Copyright Oracle Corporation, 1998. All rights reserved. ¿Qué es una Vista?

12-9 Copyright Oracle Corporation, 1998. All rights reserved.

Creación de una VistaCreació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 salvu302 AS SELECT empno EMPLOYEE_NUMBER, ename NAME,3 sal SALARY4 FROM emp5 WHERE deptno = 30;

View created.View created.

Page 10: Copyright Oracle Corporation, 1998. All rights  . · PDF file12-4 Copyright Oracle Corporation, 1998. All rights reserved. ¿Qué es una Vista?

12-10 Copyright Oracle Corporation, 1998. All rights reserved.

Recuperando Datos de una VistaRecuperando Datos de una Vista

EMPLOYEE_NUMBER NAME SALARY--------------- ---------- ---------

7698 BLAKE 28507654 MARTIN 12507499 ALLEN 16007844 TURNER 15007900 JAMES 9507521 WARD 1250

6 rows selected.

EMPLOYEE_NUMBER NAME SALARY--------------- ---------- ---------

7698 BLAKE 28507654 MARTIN 12507499 ALLEN 16007844 TURNER 15007900 JAMES 9507521 WARD 1250

6 rows selected.

SQL> SELECT *2 FROM salvu30;

Page 11: Copyright Oracle Corporation, 1998. All rights  . · PDF file12-4 Copyright Oracle Corporation, 1998. All rights reserved. ¿Qué es una Vista?

12-11 Copyright Oracle Corporation, 1998. All rights reserved.

Consulta a la Tabla del Diccionario de Datos, USER_VIEWS

Consulta a la Tabla del Diccionario de Datos, USER_VIEWS

USER_VIEWSEMPVU10

SELECT empno, ename, jobFROM empWHERE deptno = 10;

USER_VIEWSUSER_VIEWSEMPVU10EMPVU10

SELECT empno, ename, jobFROM empWHERE deptno = 10;

SQL*PlusSQL*Plus

SELECT *FROM empvu10;

EMP7839 KING PRESIDENT7782 CLARK MANAGER7934 MILLER CLERK

Page 12: Copyright Oracle Corporation, 1998. All rights  . · PDF file12-4 Copyright Oracle Corporation, 1998. All rights reserved. ¿Qué es una Vista?

12-12 Copyright Oracle Corporation, 1998. All rights reserved.

Modificación de una VistaModificació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 empvu102 (employee_number, employee_name, job_title)3 AS SELECT empno, ename, job4 FROM emp5 WHERE deptno = 10;

View created.View created.

Page 13: Copyright Oracle Corporation, 1998. All rights  . · PDF file12-4 Copyright Oracle Corporation, 1998. All rights reserved. ¿Qué es una Vista?

12-13 Copyright Oracle Corporation, 1998. All rights reserved.

Creación de una Vista ComplejaCreación de una Vista Compleja

Cree una vista compleja que contenga funciones de grupo, para ver valores de dos tablas.

Cree una vista compleja que contenga Cree una vista compleja que contenga funciones de grupo, para ver valores de dos funciones de grupo, para ver valores de dos tablas.tablas.

SQL> CREATE VIEW dept_sum_vu2 (name, minsal, maxsal, avgsal)3 AS SELECT d.dname, MIN(e.sal), MAX(e.sal),4 AVG(e.sal)5 FROM emp e, dept d6 WHERE e.deptno = d.deptno7 GROUP BY d.dname;

View created.View created.

Page 14: Copyright Oracle Corporation, 1998. All rights  . · PDF file12-4 Copyright Oracle Corporation, 1998. All rights reserved. ¿Qué es una Vista?

12-14 Copyright Oracle Corporation, 1998. All rights reserved.

Reglas para Realizar Operaciones DML sobre Vistas

Reglas para Realizar Operaciones DML sobre Vistas

•• Se pueden realizar operaciones DML Se pueden realizar operaciones DML sobre vistas simples. sobre vistas simples.

•• No se puede eliminar una fila si la vista No se puede eliminar una fila si la vista contiene:contiene:

––Funciones de grupo.Funciones de grupo.

––Una clUna cl ááusula GROUP BY.usula GROUP BY.

––El comando DISTINCT.El comando DISTINCT.

Page 15: Copyright Oracle Corporation, 1998. All rights  . · PDF file12-4 Copyright Oracle Corporation, 1998. All rights reserved. ¿Qué es una Vista?

12-15 Copyright Oracle Corporation, 1998. All rights reserved.

Reglas para Realizar Operaciones DML sobre Vistas

Reglas para Realizar Operaciones DML sobre Vistas

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

–– Cualquiera de las condiciones anteriores.Cualquiera de las condiciones anteriores.

–– Columnas definidas por expresiones.Columnas definidas por expresiones.

–– La pseudocolumna ROWNUM.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.Cualquiera de las condiciones anteriores.

–– Cualquier columna NOT NULL no incluCualquier columna NOT NULL no inclu íída da por la vista.por la vista.

Page 16: Copyright Oracle Corporation, 1998. All rights  . · PDF file12-4 Copyright Oracle Corporation, 1998. All rights reserved. ¿Qué es una Vista?

12-16 Copyright Oracle Corporation, 1998. All rights reserved.

La Claúsula WITH CHECK OPTIONLa Claúsula WITH CHECK OPTION

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

•• Si se intenta cambiar el nSi se intenta cambiar el n úúmero de mero de departamento para cualquier fila, la sentencia departamento para cualquier fila, la sentencia fallarfallar áá porque viola la restricciporque viola la restricci óón de CHECK n de CHECK OPTION.OPTION.

SQL> CREATE OR REPLACE VIEW empvu202 AS SELECT *3 FROM emp4 WHERE deptno = 205 WITH CHECK OPTION CONSTRAINT empvu20_ck;

View created.View created.

Page 17: Copyright Oracle Corporation, 1998. All rights  . · PDF file12-4 Copyright Oracle Corporation, 1998. All rights reserved. ¿Qué es una Vista?

12-17 Copyright Oracle Corporation, 1998. All rights reserved.

Denegar Operaciones DMLDenegar Operaciones DML

•• Agregando la opciAgregando la opci óón WITH READ ONLY en la n WITH READ ONLY en la definicidefinici óón de la vista, se asegura que no n de la vista, se asegura que no ocurran operaciones DML.ocurran operaciones DML.

•• Si se intenta realizar una operaciSi se intenta realizar una operaci óón DML sobre n DML sobre cualquier fila en la vista, aparecercualquier fila en la vista, aparecer áá el error el error ORAORA--01732 del Oracle8 Server.01732 del Oracle8 Server.

SQL> CREATE OR REPLACE VIEW empvu102 (employee_number, employee_name, job_title)3 AS SELECT empno, ename, job4 FROM emp5 WHERE deptno = 106 WITH READ ONLY;

View created.View created.

Page 18: Copyright Oracle Corporation, 1998. All rights  . · PDF file12-4 Copyright Oracle Corporation, 1998. All rights reserved. ¿Qué es una Vista?

12-18 Copyright Oracle Corporation, 1998. All rights reserved.

Eliminación de una VistaEliminación de una Vista

• Al Borrar una vista no perderá los datos, porque la vista está basada en tablas subyacentes de la B.D.

• 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.View dropped.

DROP VIEW view; DROP VIEW view;

Page 19: Copyright Oracle Corporation, 1998. All rights  . · PDF file12-4 Copyright Oracle Corporation, 1998. All rights reserved. ¿Qué es una Vista?

12-19 Copyright Oracle Corporation, 1998. All rights reserved.

ResumenResumen•• Una vista se deriva de los datos de otras tablas u Una vista se deriva de los datos de otras tablas u

otras vistas.otras vistas.

•• Una vista es como una ventana sobre los datos Una vista es como una ventana sobre los datos subyacentes.subyacentes.

•• Una vista provee las siguientes ventajas:Una vista provee las siguientes ventajas:

–– RestricciRestricci óón del acceso a los datos.n del acceso a los datos.

–– SimplificaciSimplificaci óón de las consultas.n de las consultas.

–– Independencia de los datos.Independencia de los datos.

–– Permite varias visiones de los mismos datos.Permite varias visiones de los mismos datos.

–– Puede ser eliminada sin borrar los datos Puede ser eliminada sin borrar los datos subyacentes.subyacentes.

Page 20: Copyright Oracle Corporation, 1998. All rights  . · PDF file12-4 Copyright Oracle Corporation, 1998. All rights reserved. ¿Qué es una Vista?

12-20 Copyright Oracle Corporation, 1998. All rights reserved.

Visión General de la PrácticaVisió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 restricciCrear una vista con una restricci óón n check.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.