Sei sulla pagina 1di 8

CREACION DE VISTAS EN SQL SERVER

Pgina: 1 / 8

VISTAS

Una vista es una tabla virtual, que en realidad, no contiene datos. Todo lo que contiene es una consulta que se define al crear la vista, y que se utiliza para crear el conjunto de resultados. A pesar de que pueda parecer un objeto sin mucho val or o uso, tiene muchas ventajas. Simplificacin de las estructuras de las tablas. Ciertas tablas pueden contener muchas columnas con nombres y tipos poco prcticos de manipular. Una vista dar al usuario los mismos datos en una forma simplificada. Reutilizacin de consultas. Cuando las consultas se ejecutan varias veces (combinaciones, clculos), una vista permite guardar la instruccin y utilizarla de una forma mas sencilla. Seguridad de acceso. Se pueden ocultar lneas y columnas a los usuarios dejando a su disposicin solo las que no impliquen seguridad en la informacin de las tablas.

Nota: La modificacin de los datos a travs de una vista solo se permite si se modifica una sola tabla correspondiente a la vista y si la consulta (origen de los dat os) de la vista no utiliza clculos.

_________________________________________________________________________
Lenguaje de Programacin II Prof: Julio C. Lin R.

CREACION DE VISTAS EN SQL SERVER

Pgina: 2 / 8

Sintaxis: CREATE VIEW NomVista [ WITH { ENCRYPTION | SCHEMABINDING } ] AS -- Sentencia SELECT Consulta_SELECT [ WITH CHECK OPTION ] Donde: Consulta_SELECT: Instruccin SELECT sin utilizar ORDER BY, UNION, COM PUTE o INTO. With Encryption: Permite cifrar el cdigo en las tabl as. With SchemaBinding: Permite vincular la vista al esquema. Con esta opcin, los objetos a los que se hace referencia en la vista deben nombrarse del siguiente modo: nom_schema.nom_objet o, y las tablas utilizadas en la vista no pueden ser eliminadas. Adems si una operacin ALTER TABLE afecta a la definicin de la vista, esta fallara. With Check Option: Permite no autorizar la insercin ni la modificacin de datos que no respondan a los criterios de la consulta.

_________________________________________________________________________
Lenguaje de Programacin II Prof: Julio C. Lin R.

CREACION DE VISTAS EN SQL SERVER

Pgina: 3 / 8

Cmo crear Vistas?


Crear vistas es una tarea sencilla, tanto si la hacemos desde el entorno grafico, como si lo hacemos a travs de cdigo TSQL. Lo nico que debemos hacer es definir una consulta, y asignarle un nombre. CREATE VIEW V_CLIENTES_MEXICO AS SELECT CustomerID, CompanyName, Country FROM Customers WHERE Country = 'Mexico' go

Tambin podemos crear la vista desde el Management Studio, especficamente sobre la carpeta VIEWS, luego de realizado esta deb er agregar la(s) tabla(s) que participaran, luego el(los) campo(s) o columna(s) de esta(s) tabla(s) as como tambin de algn criterio de filtro o agrupamiento; por ultimo se deber Grabar y darle un nombre, tal como se muestra en las siguientes figuras.

_________________________________________________________________________
Lenguaje de Programacin II Prof: Julio C. Lin R.

CREACION DE VISTAS EN SQL SERVER

Pgina: 4 / 8

Creando la Vista por medio del Management Studio

Adicionando la Tabla Customers (Clientes)

_________________________________________________________________________
Lenguaje de Programacin II Prof: Julio C. Lin R.

CREACION DE VISTAS EN SQL SERVER

Pgina: 5 / 8

Seleccionando los campos y estableciendo un filtro por el pas MEXICO

Finalmente al Grabar establecemos un nombre.

_________________________________________________________________________
Lenguaje de Programacin II Prof: Julio C. Lin R.

CREACION DE VISTAS EN SQL SERVER

Pgina: 6 / 8

Para obtener los datos de la vista, debemos tratarla como si estuviramos manipulando una tabla. Es decir, la incluiremos en una consulta de seleccin. -- Ejecucion de la vista SELECT * FROM V_CLIENTES_MEXICO go Luego de haber creado la vista podemos usarla para realizar los fi ltros que queramos sobre algn campo de la vista.

Una vista puede hacer referencia a mas de una tabla. Por tanto, podemos crear vistas mas complejas, cuyo nico propsito no sea el de filtrar y organizar los datos de una tabla a los que pueda acceder los usuarios, sino que tambin permita al usuario abstraerse de la complejidad del esquema de base de datos. En muchos casos, un usuario puede querer visualizar un conjunto de datos que se encuentran distribuidos en mltiples tablas, debido a las caracter sticas del sistema que representa la base de datos. Pensemos, por ejemplo, que un usuario desee visualizar los clientes que mas pedidos han realizado. CREATE VIEW V_Resumen_Ventas_Ao AS SELECT C.companyName,Cant_Ord=COUNT(O.OrderID), OrderTotal =SUM(D.Quantity * D.UnitPrice), [Ao]=YEAR(O.OrderDate) FROM Customers C INNER JOIN Orders O ON C.CustomerID=O.CustomerID INNER JOIN [Order Details] D ON O.OrderID=D.OrderID GROUP BY YEAR(O.OrderDate),C.companyName Go

Si queremos tener informacin s obre las vistas, podemos consultar las paginas de propiedades de cada vista, que estn disponibles en el men contextual de cada vista, en el Management Studio o bien utilizando procedimientos almacenados o vistas del sistema. -- Obtener informacion gener al de la vista sp_help V_Resumen_Ventas_Ao go

_________________________________________________________________________
Lenguaje de Programacin II Prof: Julio C. Lin R.

CREACION DE VISTAS EN SQL SERVER -- Obtener la definicion de la vista sp_helptext V_Resumen_Ventas_Ao go -- Obtener informacion sobre las dependencias de la vista sp_depends V_Resumen_Ventas_Ao go

Pgina: 7 / 8

Modificar y Eliminar Vistas


Podemos modificar una vista editandola desde el Management Studio. Al hacer clic derecho sobre ella, en el panel Explorador de objetos, escogeremos la opcion Modificar (EDIT), que abrira el diseador de consultas. Tambien podemos utilizar la instruccin ALTER VIEW , que presenta las mismas opciones que la instruccin CREATE VIEW. Para modificar una vista, debemos volver a escribir la instruccin de seleccin, y tambien debemos especificar las opciones a cambiar. ALTER VIEW V_Resumen_Ventas_Ao AS SELECT C.companyName,Cant_Ord=COUNT(O.OrderID), OrderTotal =SUM(D.Quantity * D.UnitPrice), .. FROM Customers C INNER JOIN Orders O ON C.CustomerID=O.CustomerID Para eliminar completamente la vista de la base de datos, debemos hacer clic derecho so bre ella en el explorador de soluciones, y escoger la opcion Eliminar (Delete). Tambien podemos ejecutar la instruccin DROP VIEW. DROP VIEW V_Resumen_Ventas_Ao

Encriptacion de la Vista
El hecho de poder leer la sentencia de creacion de una vista, pue de constituir en un agujero de seguridad, ya que mostrara en parte, el esquema de base de datos. SQL Server 2005 nos da la opcion de evitar que la ejecucion del procedimiento almacenado sp_helptext, o la consulta de las paginas de propiedades de una vista devuelvan la instruccin TSQL con la que se definio, especificando la opcion ENCRYPTION en la instruccin de creacion. -- Encriptacin de la definicin de la vista anteriormente creada ALTER VIEW V_Resumen_Ventas_Ao WITH ENCRYPTION --NEW!!! AS SELECT C.companyName,Cant_Ord=COUNT(O.OrderID), OrderTotal =SUM(D.Quantity * D.UnitPrice), [Ao]=YEAR(O.OrderDate) FROM Customers C INNER JOIN Orders O ON C.CustomerID=O.CustomerID INNER JOIN [Order Details] D ON O.OrderID=D.OrderID GROUP BY YEAR(O.OrderDate),C.companyName go

_________________________________________________________________________
Lenguaje de Programacin II Prof: Julio C. Lin R.

CREACION DE VISTAS EN SQL SERVER

Pgina: 8 / 8

Si despus de haber realizado esta opcin volviramos a intentar a ver la sentencia de creacin de la vista por el Management Studio, nos daramos cuenta: 1. Que existe un icono de un candado al lado del icono correspondiente,

2. Ya no podemos modificar la vista por que la opcin del men contextual correspondiente a MODIFICAR (EDIT) se encuentra deshabilitada y si intentramos mostrar el cdigo va (SCRIPT VIEW AS) una instruccin CREATE o ALTER en memoria u otra pantalla nos aparecera la siguiente figura:

Y si tambin intentramos realizarlo va comando TSQL (sp_helptext), nos mostrara un mensaje de que el texto de la vista se encuentra Encriptado.

_________________________________________________________________________
Lenguaje de Programacin II Prof: Julio C. Lin R.

Potrebbero piacerti anche