Sei sulla pagina 1di 11

Parcial III: 2

Leccin 11

Creando vistas
Objetivos del captulo En este captulo se revisar lo siguiente: Descripcin de una Vista Creacin, modificacin de la definicin y eliminacin de una vista Recuperacin de datos a travs de una vista Insercin, modificacin y eliminacin de datos por medio de una vista Creacin y uso de vistas en lnea Ejecucin del anlisis Top-N

Qu es una vista? Se puede presentar un subconjunto lgico o combinacin de datos para la creacin de vistas de tablas. Una vista es una tabla lgica basada en una tabla u otra vista. Una vista no contiene datos propiamente pero es como una ventana por medio de la cual los datos de las tablas pueden ser vistas o cambiadas. Las tablas en las que una vista se basa son llamadas tablas base. La vista es almacenada como una sentencia SELECT en el diccionario de datos. Ventajas de las vistas Las vistas restringen el acceso a los datos puesto que una vista puede mostrar ciertas columnas de una tabla Las vistas pueden ser usadas para hacer simples consultas y recuperar los resultados de consultas complejas. Por ejemplo, las vistas pueden ser usadas para consultar informacin de mltiples tablas sin que el usuario conozca como escribir sentencias Join.

Parcial III: 2

Leccin 11

Las vistas proporcionan independencia de los datos para usuarios y aplicaciones con fines especficos. Una vista puede ser usada para recuperar datos de diversas tablas. Las vistas proporcionan a los grupos de usuarios acceso a los datos de acuerdo a sus criterios particulares.

Vistas simples versus vistas complejas Ah dos clasificaciones para vistas: simples y complejas. La diferencia bsica es relacionada con las operaciones DML (INSERT, UPDATE y DELETE) Una vista simple es una que: o Se deriva de datos de una nica tabla o No contiene funciones o grupos de datos o Se pueden ejecutar operaciones DML por medio de la vista Una vista compleja es una que: o Se deriva de datos de diversas tablas o Contiene funciones o grupos de datos o No siempre permite operaciones DML por medio de la vista

Creando una vista Se puede crear una vista incrustando una subconsulta CREATE VIEW. Sintaxis OR REPLACE FORCE NOFORCE

en la sentencia

recrea la vista si esta ya existe crea una vista independientemente de que las tablas base existan crea una vista solo si las tablas base existen (esto es por defecto)

Parcial III: 2 view alias

Leccin 11 es el nombre de la vista especifica nombres para la expresin seleccionada por la consulta de la vista (el nmero de alias debe ser igual al nmero de expresiones seleccionadas por la vista) es una sentencia SELECT completa (Se puede utilizar alias para las columnas en la lista del SELECT) especfica que nicamente las filas accedidas por la vista pueden ser modificadas o insertadas es el nombre asignado al constraint CHECK OPTION Asegura que las operaciones DML no puedan ejecutarse en esta vista

subquery

WITH CHECK OPTION constraint WITH READ ONLY

En el ejemplo anterior se crea una vista que contiene el nmero de empleado, apellidos y salario de cada empleado del departamento 80. Se puede desplegar la estructura de la vista con el uso del comando iSQL*Plus.

Normas para la creacin de vistas La subconsulta que define a una vista puede contener un SELECT complejo, incluyendo JOINS, GROUPS y subconsultas. La subconsulta que define la vista no puede contener una clusula ORDER BY. La clusula ORDER BY se especifica cuando se recuperan los datos de la vista. Si no se especifica un nombre al constraint para una vista creada con WITH CHECK OPTION, el sistema asigna un nombre por defecto con el formato SYS_Cn. Se puede usar la opcin OR REPLACE para cambiar la definicin de una vista sin eliminarla y recrearla o reasignando privilegios previamente asignados.

Parcial III: 2

Leccin 11

Se puede controlar el nombre de las columnas con la inclusin de alias en las columnas de la subconsulta. En el ejemplo anterior se crea una vista conteniendo el nmero de empleado (EMPLOYEE_ID) con el alias ID_NUMBER, nombre (LAST_NAME) con el alias NAME y salario anual (SALARY) con el alias ANN_SALARY para cada empleado del departamento 50. Como una alternativa, se puede usar un alias despus de la sentencia CREATE y antes de la subconsulta (SELECT). El nmero de alias listado debe corresponder al nmero de expresiones seleccionadas en la subconsulta.

Recuperando datos de una vista Se puede recuperar datos de una vista de la misma forma que se recuperan los datos de una tabla. Se pueden desplegar todo el contenido de la vista o solo algunas filas y columnas.

Parcial III: 2

Leccin 11

Vistas en el diccionario de datos Una vez que la vista ha sido creada, se puede consultar la vista del diccionario de datos llamada USER_VIEWS para ver el nombre de la vista y su definicin. El texto de la sentencia SELECT que conforma la vista es almacenada en una columna de tipo LONG. Acceso a datos utilizando vistas Cuando se obtienen datos utilizando vistas, el servidor de Oracle ejecuta las siguientes operaciones: 1. Recupera la definicin de la vista de la tabla del diccionario de datos USER_VIEWS 2. Verifica los privilegios de acceso para las tablas base de la vista 3. Convierte la consulta de la vista en una operacin equivalente a la de la tabla o tablas base. En otras palabras, los datos son recuperados desde la tabla(s) base o una actualizacin es hecha a la tabla base Modificando una vista

Con la opcin OR REPLACE, una vista puede ser creada an si una ya existe con este nombre, y de esta manera remplazar la versin antigua de la vista para el propietario. De esta manera la vista pueda ser modificada sin necesidad de eliminarla, recrearla y reasignarle privilegios a los objetos.

Parcial III: 2

Leccin 11

Nota: Cuando asignas alias a las columnas en la clusula CRATE VIEW, recuerda que los alias son listados en el mismo orden que las columnas de la sub consulta. Creando una vista compleja

En ejemplo anterior se crea una vista compleja con los nombres de departamentos, salario mnimo, salario mximo y salario promedio por departamento. Note que los nombres alternativos que han sido especificados para la vista. Este es un requerimiento si alguna columna de la vista es derivada de una funcin o expresin. Se puede ver la estructura de una vista con el uso del comando DESCRIBE de iSQL*Plus. Despliegue el contenido de la vista con el uso de la sentencia SELECT.

Ejecutando operaciones DML en una vista Se pueden ejecutar operaciones DML en datos por medio de una vista si estas operaciones siguen ciertas reglas. Se pueden eliminar una fila de una vista si esta no contiene alguno de lo siguiente: Funciones de grupo Una clusula GROUP BY La palabra reservada DISTINCT Una columna con la palabra reservada ROWNUM Se pueden modificar datos a travs de una vista a menos que esta contenga alguna de las siguientes condiciones: Funciones de grupo Una clusula GROUP BY

Parcial III: 2 La palabra reservada DISTINCT Una columna con la palabra reservada ROWNUM Columnas definidas por expresiones ( SALARY * 12)

Leccin 11

Se pueden agregar datos a travs de una vista a menos que esta contenga alguna de las siguientes condiciones: Funciones de grupo Una clusula GROUP BY La palabra reservada DISTINCT Una columna con la palabra reservada ROWNUM Columnas definidas por expresiones ( SALARY * 12) Columnas NOT NULL de la tabla base que no son incluidas en la vista Todos los valores requeridos deben estar presentes en la vista. Recuerde que se estn agregando valores directamente a la tabla base por medio de la vista. Utilizando la clusula WITH CHECK OPTION

Es posible ejecutar verificaciones de integridad referencial por medio de vistas. Se puede adems implementar constraints a nivel de base de datos. La vista puede ser usada para proteger la integridad de los datos, pero su uso es muy limitado. La clusula WITH CHECK OPTION especfica que las inserciones y modificaciones ejecutadas a travs de la vista no pueden crear filas si estas no cumplen las condiciones de la vista, por consiguiente esto permite un constraint de integridad y verificacin en la validacin de datos desde las inserciones o modificaciones. Si se intenta ejecutar operaciones DML en filas de la vista que no son seleccionadas, el siguiente error es desplegado con el nombre del constraint, si este ha sido especificado.

Nota: No se actualizaron filas puesto que el nmero de departamento cambia a 10, la vista no puede disponer de este empleado. Por consiguiente, con la clusula WITH CHECK OPTION, la vista puede ver solo los empleados del

Parcial III: 2

Leccin 11

departamento 20 y no permite que el nmero de departamento para aquellos empleados sea cambiado a travs de la vista. Negando operaciones DML Se puede asegurar que no ocurran operaciones DML en una vista creando esta con la opcin WITH READ ONLY.

Todo intento para remover una fila de una vista con el constraint READ-ONLY genera un error.

Todo intento por insertar o modificar una fila utilizando una vista con el constraint READ-ONLY genera un error.

Eliminando una vista Se usa la sentencia DROP VIEW para eliminar una vista. Esta sentencia elimina la definicin de la vista de la base de datos. La eliminacin de vistas no tiene un efecto en las tablas en las que la vista se basa. Las vistas u otras aplicaciones basadas en vistas eliminadas quedan invlidas. Solo el creador o un usuario con el privilegio DROP ANY VIEW pueden eliminar una vista. Sintaxis:

Donde: view

es el nombre de la vista

Parcial III: 2

Leccin 11

Vistas en lnea Una vista en lnea es creada por la colocacin de una sub consulta en la clusula FROM y el otorgamiento de un alias a la misma. La sub consulta define un origen de datos que puede ser referenciado en una consulta principal. En el siguiente ejemplo, la vista en lnea b proporciona el detalle de todos los nmeros de departamentos y el salario mximo para cada departamento de la tabla EMPLOYEES. La clusula WHERE a.department_id = b.department_id AND a.salary < b.maxsal de la consulta principal despliega el nombre del empleado, salario, numero de departamento, y salario mximo para todos los empleados que ganan menos que el salario mximo en su departamento.

Anlisis Top-N Las consultas Top-N son tiles en escenarios donde se necesite mostrar solo los n primeros o n ltimos registros de una tabla basados en una condicin. El resultado puede ser utilizado para un anlisis futuro. Por ejemplo, usando el anlisis Top-N se pueden ejecutar los siguientes tipos de consultas: Los tres mejores sueldos de la compaa Los cuatro empleados reclutados mas recientemente Los primeros dos representantes de venta que tienen el mximo nmero de ventas Los primeros tres productos que mas se venden en los ltimos seis meses Ejecutando el anlisis Top-N

Las consultas Top-N utilizan una estructura de consultas anidadas con los elementos descritos a continuacin: Una sub consulta o vista en lnea que genere una lista ordenada de datos. La sub consulta o vista en lnea incluye la clusula ORDER BY

Parcial III: 2

Leccin 11

para asegurarse de que el resultado esta en el orden deseado. Para que los resultados se recuperen desde los valores mas antiguos, el parmetro DESC es necesario. Una consulta externa para limitar el nmero de filas en el resultado final. La consulta externa incluye los siguientes componentes: o La palabra reservada ROWNUM, que asigna un valor secuencial iniciando con el 1 para cada fila recuperada por la sub consulta o Una clusula WHERE, que especifique las n filas que sern recuperadas. La clusula WHERE externa debe al menos usar un operador < o <=.

Ejemplo del anlisis Top-N El ejemplo de la imagen anterior ilustra como se despliegan los nombres y salarios de los tres empleados que ms ganan usando la tabla EMPLOYEES. La sub consulta obtiene los detalles, nombre y salario de todos los empleados de la tabla EMPLOYEES, ordenndolos descendentemente por la columna salario. La clusula WHERE ROWNUM < 3 de la consulta principal asegura que solo los primeros tres registros de ese resultado sean desplegados. En el siguiente ejemplo del anlisis Top-N que usa una vista en lnea E para mostrar los cuatro empleados ms antiguos de la compaa.

Parcial III: 2 Resumen

Leccin 11

Qu es una vista? Una vista esta basada en una tabla u otra vista y acta como una ventana a travs de la cual los datos de las tablas pueden ser vistos o cambiados. Una vista no contiene datos. La definicin de una vista esta almacenada en el diccionario de datos. Se puede ver la definicin de una vista en la tabla del diccionario de datos USER_VIEWS. Ventajas de las vistas Restringen el acceso a la base de datos Simplifica consultas Proporciona independencia a los datos Proporciona mltiples vistas del mismo dato Puede ser eliminada sin afectar los datos Opciones de las vistas Puede ser una vista simple, basada en una tabla Puede ser una vista compleja basada en mas de una tabla o puede contener grupos o funciones Puede remplazar otras vistas con el mismo nombre Puede contener constraints de verificacin Puede ser de solo lectura

Potrebbero piacerti anche