Sei sulla pagina 1di 7

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGA FACULTAD DE ING.

MINAS, GELOGIA Y CIVIL ESCUELA DE FORMACIN PROFESIONAL DE INGENIERIA DE SISTEMAS

1.

Objetivos
Despus de realizar esta prctica, el alumno ser capaz de: Definir una vista con la instruccin CREATE VIEW. Modificar datos mediante vistas. Optimizar el rendimiento mediante vistas.

2. 3.

Marco Terico
INTRODUCCIN A LAS VISTAS

Una vista ofrece la posibilidad de almacenar una consulta predefinida como un objeto en una base de datos para usarse posteriormente. Las tablas consultadas en una vista se denominan tablas base. Salvo algunas excepciones, es posible dar nombre a cualquier instruccin SELECT y almacenarla como una vista. Algunos ejemplos habituales de vistas son los siguientes: Un subconjunto de las filas o columnas de una tabla base. Una unin de dos o ms tablas base. Una combinacin de dos o ms tablas base.
Lab. Administracin de Base de Datos1 (IS-443) Prof. Elvira Fernndez

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGA FACULTAD DE ING. MINAS, GELOGIA Y CIVIL ESCUELA DE FORMACIN PROFESIONAL DE INGENIERIA DE SISTEMAS

Un resumen estadstico de una tabla base. Un subconjunto de otra vista o alguna combinacin de vistas y tablas base.

Ventajas de las vistas


Centrar el inters en los datos de los usuarios Centrarse slo en los datos importantes o adecuados Limitar el acceso a los datos confidenciales Enmascarar la complejidad de la base de datos Ocultar el diseo de la base de datos compleja Simplificar las consultas complejas, incluyendo las consultas distribuidas a datos heterogneos Simplificar la administracin de los permisos de usuario Mejorar el rendimiento Organizar los datos para exportarse a otras aplicaciones CREACIN DE UNA VISTA Al crear una vista, Microsoft SQL Server2005 comprueba la existencia de los objetos a los que se hace referencia en su definicin. El nombre de la vista debe ajustarse a las normas para los identificadores. Opcionalmente, es posible especificar un nombre de propietario para la vista. Debe establecer una convencin de denominacin coherente para distinguir las vistas de las tablas. Por ejemplo, puede agregar la palabra vista como sufijo de cada objeto vista que cree. De este modo podr distinguir fcilmente entre objetos similares (tablas y vistas) al consultar la vista Sintaxis: CREATE VIEW propietario.nombreVista [(columna [,n ])] [WITH ENCRYPTION ] AS instruccinSelect [WITH CHECK OPTION] RESTRICCIONES EN LAS DEFINICIONES DE VISTAS Al crear vistas, tenga presentes las restricciones siguientes: La instruccin CREATE VIEW no puede incluir las clusulas COMPUTE o COMPUTE BY. La instruccin CREATE VIEW no puede incluir la palabra clave INTO. La instruccin CREATE VIEW puede incluir la clusula ORDER BY, slo si se utiliza la palabra clave TOP.
Lab. Administracin de Base de Datos2 (IS-443) Prof. Elvira Fernndez

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGA FACULTAD DE ING. MINAS, GELOGIA Y CIVIL ESCUELA DE FORMACIN PROFESIONAL DE INGENIERIA DE SISTEMAS

Las vistas no pueden hacer referencia a tablas temporales. Las vistas no pueden hacer referencia a ms de 1.024 columnas.

Ejemplo01:
ste es un ejemplo de una vista que crea una columna (Subtotal) que calcula los subtotales de un pedido a partir de las columnas PrecioCompra, CantidadSolicitada .
CREATE VIEW OrderSubtotalsView AS SELECT OD.IdOrden as id_orden, SUM(CONVERT (money,(OD.CantidadSolicitada*PrecioCompra))) as Subtotal FROM dbo.ORDEN_DETALLE as OD GROUP BY OD.IdOrden

En este ejemplo se consulta la vista para ver los resultados.


SELECT * FROM OrderSubtotalsView

Ejemplo02
Se desea obtener un reporte que muestre el balance entrada / salida de todos los productos registrados en la base de datos MarketPeru.el reporte debe mostrar para cada producto: el codigo y el nombre del producto, la cantidad de unidades entrantes en el almacn, y la cantidad de unidades salientes del almacn. Este problema se resuelve fcilmente si se crea una vista para las entradas y una segunda vista para las salidas, luego debe combinar las vistas anteriores para obtener el reporte final. CREACION DE LA VISTA PARA EL REPORTE DE ENTRADAS
CREATE VIEW V_UnidadesEntrantes as select producto.idproducto, producto.nombre, sum(orden_detalle.cantidadRecibida) as Entradas from producto left outer join orden_detalle on producto.idproducto=orden_detalle.idproducto GROUP BY producto.idproducto, producto.nombre select * from v_UnidadesEntrantes

CREACION DE LA VISTA PARA EL REPORTE DE SALIDAS

CREATE VIEW V_UnidadesSalientes as select producto.idproducto, producto.nombre, sum(guia_Detalle.cantidad) as Salidas

Lab. Administracin de Base de Datos3 (IS-443)

Prof. Elvira Fernndez

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGA FACULTAD DE ING. MINAS, GELOGIA Y CIVIL ESCUELA DE FORMACIN PROFESIONAL DE INGENIERIA DE SISTEMAS from producto left outer join guia_Detalle on producto.idproducto=guia_detalle.idproducto GROUP BY producto.idproducto, producto.nombre

select * from V_UnidadesSalientes COMBINACION DE LAS VISTAS PARA OBTENER EL REPORTE FINAL SELECT V_UnidadesEntrantes.idproducto, v_UnidadesEntrantes.nombre, v_UnidadesEntrantes.entradas, v_Unidadessalientes.salidas FROM V_UnidadesEntrantes INNER JOIN V_UnidadesSalientes on v_UnidadesEntrantes.idproducto=v_UnidadesSalientes.idproducto order by v_UnidadesEntrantes.idproducto

OBTENCION DE LA DEFINICION DE UNA VISTA


Para averiguar como esta definida una vista puede utilizar los siguientes procedimientos almacenados del sistema para consultar las siguientes tablas del catalogo de una base de datos.

Vista del sistema Almacena Procedimiento Nombre de la vista Sp_help nombre_vista sys.sysobjects Nombre de los objetos Sp_depends nombre_vista sys.sysdepends

dependientes de la vista sys.syscomments Sentencia que defini la vista Sp_helptext nombre_vista sys.syscolumns Columnas definidas en la Sp_columns nombre_vista vista

MODIFICACIN Y ELIMINACION DE UNA VISTA MODIFICACIN DE UNA VISTA Sintaxis:


ALTER VIEW nombreVista [(liste de columnas)] [WITH ENCRYPTION ] AS instruccinSelect

MODIFICACIN Y ELIMINACION DE UNA VISTA Sintaxis:


Lab. Administracin de Base de Datos4 (IS-443) Prof. Elvira Fernndez

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGA FACULTAD DE ING. MINAS, GELOGIA Y CIVIL ESCUELA DE FORMACIN PROFESIONAL DE INGENIERIA DE SISTEMAS

DROP VIEW nombre_vista Ejercicios: 1.- crear 4 vistas diferentes. 2.- modifique y elimine una vista.
USO DE WITH CHECK OPTION Se ilustra esta opcin con un ejemplo: Ejercicio: Crear una vista(V_MIS_PRODUCTOS) que liste los productos(idproducto, idCategoria, idProveedor, nombre) de la categora 2. SELECT * FROM V_MIS_PRODUCTOS
Insercion de un porducto a travez de la vista V_MIS_PRODUCTOS INSERT INTO V_MIS_PRODUCTOS Values(1, 14, 'chocolate sublime') --consultando la vista SELECT * FROM V_MIS_PRODUCTOS

Creacin

de una vista con WITH CHECK OPTION

CREATE VIEW V_MIS_PRODUCTOS_CHECK AS SELECT idproducto, idCategoria,idProveedor,nombre FROM producto WHERE idcategoria=2 WITH CHECK OPTION Insercion de un porducto que viola el filtro de la vista INSERT INTO V_MIS_PRODUCTOS_CHECK Values(1, 14, 'chocolate sublime')

Lab. Administracin de Base de Datos5 (IS-443)

Prof. Elvira Fernndez

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGA FACULTAD DE ING. MINAS, GELOGIA Y CIVIL ESCUELA DE FORMACIN PROFESIONAL DE INGENIERIA DE SISTEMAS

Practica

--- my view create view v_mostrarProductoPrecio as select Nombre,PrecioProveedor as precio_unitario from dbo.PRODUCTO --execute view select *from v_mostrarProductoPrecio -- my view 2 CREATE VIEW v_OrderSubtotalsView AS SELECT OD.IdOrden as id_orden, SUM(CONVERT (money,(OD.CantidadSolicitada*PrecioCompra))) as Subtotal FROM dbo.ORDEN_DETALLE as OD GROUP BY OD.IdOrden -- execute view SELECT * FROM v_OrderSubtotalsView -- my view 03 entrada CREATE VIEW v_UnidadesEntrantes as select producto.idproducto, producto.nombre, sum(orden_detalle.cantidadRecibida) as Entradas from producto left outer join orden_detalle on producto.idproducto=orden_detalle.idproducto GROUP BY producto.idproducto, producto.nombre select * from v_UnidadesEntrantes -- my view 03 salida CREATE VIEW V_UnidadesSalientes as select producto.idproducto, producto.nombre, sum(guia_Detalle.cantidad) as Salidas from producto left outer join guia_Detalle on producto.idproducto=guia_detalle.idproducto GROUP BY producto.idproducto, producto.nombre select * from V_UnidadesSalientes --COMBINACION DE LAS VISTAS PARA OBTENER EL REPORTE FINAL SELECT V_UnidadesEntrantes.idproducto, v_UnidadesEntrantes.nombre, v_UnidadesEntrantes.entradas, v_Unidadessalientes.salidas FROM V_UnidadesEntrantes INNER JOIN V_UnidadesSalientes

Lab. Administracin de Base de Datos6 (IS-443)

Prof. Elvira Fernndez

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGA FACULTAD DE ING. MINAS, GELOGIA Y CIVIL ESCUELA DE FORMACIN PROFESIONAL DE INGENIERIA DE SISTEMAS on v_UnidadesEntrantes.idproducto=v_UnidadesSalientes.idproducto order by v_UnidadesEntrantes.idproducto ---------------------Sp_help V_UnidadesSalientes Sp_depends V_UnidadesSalientes Sp_helptext V_UnidadesSalientes Sp_helptext v_mostrarProductoPrecio --- my view alter view v_mostrarProductoPrecio encryption as --- ejercicio view create view v_Mis_Productos as select idproducto, idCategoria, idProveedor, nombre from Producto where idCategoria=2 select *from v_Mis_Productos -- productos select *from PRODUCTO -- insertar a vista insert into v_Mis_Productos Values(1, 14, 'Todino') --otra forma create view v_Mis_Productos as select idproducto, idCategoria, idProveedor, nombre from Producto where idCategoria=2 with check option -- insertar a vista insert into v_Mis_Productos Values(2, 14, 'motta') select *from v_Mis_Productos

Lab. Administracin de Base de Datos7 (IS-443)

Prof. Elvira Fernndez

Potrebbero piacerti anche