Sie sind auf Seite 1von 13

Vistas Vistas

Mdulo 3 Mdulo 3

Mdulo 3.2.3 SQL: Vistas

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

pueden ser diferentes

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

puede ser compleja (joins, agrupamientos, union, etc.)

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

Fin Mdulo 3.2.3 SQL: Vistas

Bases de Datos II

Das könnte Ihnen auch gefallen