Beruflich Dokumente
Kultur Dokumente
Mdulo 3 Mdulo 3
Bases de Datos II
Vistas Vistas
Mdulo 3 Mdulo 3
Es una TABLA VIRTUAL, que se forma del resultado de una consulta SQL sobre una o ms tablas de la Base de Datos.
Vista
Tabla1
Tabla2
Tabla3
Vistas Vistas
Mdulo 3 Mdulo 3
Es una definicin almacenada de una sentencia SELECT que especifica las filas y columnas a recuperar cuando se hace alusin a la vista. Una vez definida es referenciada como una tabla. An cuando parezca ser un conjunto permanente de filas y columnas almacenadas en un disco, no lo es. Crear una vista NO crea una copia permanente de los datos no ocupa espacio
Bases de Datos II
Vistas Vistas
Algunos comportamientos :
Mdulo 3 Mdulo 3
Alterar los datos de una tupla en una tabla base puede provocar que desaparezca dicha tupla en la(s) vista(s) que la utilice(n). Si se inserta un registro en una tabla base puede suceder que no figure en la vista (si no cumple con la condicin de la sentencia SQL subyacente)
Bases de Datos II
Vistas Vistas
OBJETIVOS
Mdulo 3 Mdulo 3
Reforzar la seguridad e Integridad de los datos. Resultados de consultas muy utilizadas (para reportes o aplicaciones) Abstraccion en modelos conceptuales complejos Sintaxis CREATE VIEW nombre_vista [col_vista1,..., col_vistaN] AS sentencia_select
Bases de Datos II
Vistas Vistas
Mdulo 3 Mdulo 3
1 Si no se especifica CREACIN : columnas toma las de las tablas base Ej. CREATE VIEW FACTURAS_REDUC AS SELECT NroFactura, CodCliente, Fecha FROM FACTURAS;
CREATE VIEW PEDIDOS_PENDIENTES (Pedido, Fecha, NroCliente) AS SELECT NroPedido, FecIngreso, idCliente FROM PEDIDOS 2 Los nombres de columnas en la WHERE estado <> E; consulta y la vista
Bases de Datos II
Vistas Vistas
Ej.
Mdulo 3 Mdulo 3
CREATE VIEW ALUMNOS_INSCRIPTOS AS SELECT A.Nombre as NomAlumno, M.Nombre as Materia, I.Fecha as FecInscripcion FROM ALUMNOS A, MATERIAS M, INSCRIPCIONES I WHERE A.idAlumno = I.idAlumno La consulta subyacente and I.idMateria = M.idMateria Uso : select * from ALUMNOS_INSCRIPTOS where FecInscripcion >= 01.03.2011
Bases de Datos II
Vistas Vistas
ELIMINAR UNA VISTA DROP VIEW nombre_vista; En el caso anterior DROP VIEW ejemplo;
Mdulo 3 Mdulo 3
Bases de Datos II
Vistas Vistas
Mdulo 3 Mdulo 3
VISTAS Y COLUMNAS VIRTUALES Una columna virtual puede resultar de una expresion aritmtica o una funcin agregada en la consulta subyacente de la vista. Ejemplo :
CREATE VIEW FACTURAS_CALC AS SELECT H.NroFactura, sum(D.Cantidad * A.Precio) as Importe FROM FACT_HEADER H, FACT_DET D, ARTICULOS A WHERE H.NroFactura = D.NroFactura and A.CodArticulo = D.CodArticulo GROUP BY H.NroFactura
Bases de Datos II
Vistas Vistas
Vistas basadas en otras vistas
Mdulo 3 Mdulo 3
CREATE VIEW Total_por_facturas (nroCliente, nroOrden, Saldo) AS SELECT o.customer_num, o.ord_num, SUM(total_price) FROM ITEMS i, ORDERS o WHERE i.order_num = o.order_num GROUP BY 1,2; CREATE VIEW Total_por_clientes (cnum, saldo) AS SELECT nroCliente, sum(Saldo) FROM Total_por_facturas GROUP BY 1;
Bases de Datos II
Vistas Vistas
RESTRICCIONES PARA CREARLAS No se pueden crear indices sobre ellas
Mdulo 3 Mdulo 3
Se debe tener todos los privilegios de SELECT para todas las columnas que forman la Vista.
Bases de Datos II
Vistas Vistas
Vistas Actualizables
Mdulo 3 Mdulo 3
No son actualizables cuando : - Se basan en un Join o Union - Poseen una funcin agregada (columna virtual) - Poseen una expresin (columna virtual).
Vista Actualizable :
create view V_EMP as select * from EMPLEADOS where Sueldo >= 10000
create view V_EMP as Vista No-Actualizable : select E.*, S.Nombre from EMPLEADOS E, SECCIONES S where Sueldo >= 10000 and E.idSec = S.idSec
Bases de Datos II
Vistas Vistas
Mdulo 3 Mdulo 3
Bases de Datos II