Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
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.
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
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
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
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
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
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')
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
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