Vistas en SQL Server

 Vistas en SQL Server


En muchas ocasiones se no hace muy incómodo mostrar todos los registros de una tabla o en la combinación de dos o más tablas el volumen de registros se nos hace demasiado grande, en este artículo estaremos hablando de las vistas en SQL, aprenderemos a como crear una vista sencilla a partir de una tabla y también crear vistas en la unión de más tablas.


Que es una vista 


Que es una vista

Una vista en sql es una tabla virtual en la cual podemos almacenar los registros de una consulta de una o varias tablas. Los registros en la vista no están almacenados en la base de datos como un objeto.

Las vistas almacenan los registros como objetos para se utilizados posteriormente y así mostrar la información de los campos que contiene la consulta.

Las vistas fueron creadas para mostrar únicamente la información resumida de los registros almacenados en una tabla o en la unión de varias tablas. Las vistas fueron pensadas para crear seguridad dentro de una base de datos ya que limita el acceso a los registros que pueden tener diferentes usuarios. Dicho esto, de esta manera simplificamos los permisos de los usuarios ya que solamente podrán tener acceso a los registros atreves de los campos creados en las vistas, de modo que evitamos posibles cambios en la estructura de la tabla por algún posible error del usuario.

También las vistas nos ayudan a mejorar el rendimiento ya que nos evitamos tipear (escribir) instrucciones repetidamente almacenadas lo que en muchas ocasiones se nos vuelve algo molesto.

El uso de una vista tiene como objetivo permitirnos poder personalizar los registros de una tabla ya que si esta contiene grande cantidades de campos podemos solamente seleccionar los campos que necesitamos mostrarle al usuario, como segundo propósito las vistas nos van a permitir mantener la seguridad de los registros ya que en muchas ocasiones dependiendo del tipo de base de datos y tablas hay registros que son muy delicados y complejos, por ende no cualquier usuario puede tener acceso a estos, y por últimos las vista no solo nos va permitir mostrar los registros de una tablas sino que podemos crear vistas de mas de una tabla y poder de esta manera seleccionar que registros son los que serán visualizados.

Hay 2 manera de crear una vista, podemos hacerlo a través de Transact SQL o bien podemos utilizar el asistente del Management Studio.


Creacion de una vista a partir de Transact SQL

Como mencionamos anteriormente hay 2 maneras de crear una vista utilizando Transact SQL y el asistente, bueno vamos a empezar creado una vista a partir de Transact SQL

La sintaxis para crear una vista es la siguiente:

CREATE VIEW NOMBREVISTA 
AS
  SENTENCIA SELECT
  FROM TABLA 

Para implementar un vista debemos hacer uso de la siguiente sintaxis que inicia con el comando CREATE seguido tenemos que especificar con la palabra VIEW  que es una vista los vamos a crear y posteriormente creado la consulta SELECT para obtener los registros:

Ahora veamos un ejemplo de como crear una vista. supongamos que deseamos obtener los registros de la tabla productos y que estos puedan ser visualizado por los usuarios de manera tradicional podríamos hacer la siguiente consulta.

SELECT * FROM SivProductos 

La cual nos arrojaría el siguiente resultado:

Sería muy fácil hacer eso y mostrar toda la información de los productos, pero de igual manera debemos tener en cuenta que los usuarios no pueden tener acceso a toda la información ya sea que lo hagamos solamente para consulta o que el usuario final vaya a realizar una modificación. para esos casos podemos crear una vista y delimitar a qué registros podrá tener el usuario final, veamos la vista a crear.

CREATE VIEW VW_Productos
AS
 SELECT ProductoID,NombreProducto,Presentacion,CantidadExistente,PrecioVenta
 FROM SivProductos 

Ejecutemos la consulta creada para la vista:

Luego de haber ejecutado la consulta. Nos vamos al menú de nuestra base de datos, dependiendo del idioma buscamos la opción VIEW o VISTAS desplegamos las opciones y ahí vamos a observar que se ha guardado la vista que creamos.


Para ejecutar y ver los registros que nos mostrar la vista simplemente tenemos que agregar la sentencia SELECT.


Como vemos en la vista hemos indicado que solo nos muestre el codigo del producto, nombre , la presentación, la cantidad existente y el precio. Como mencionábamos al inicio las vistas las podemos personalizar para no mostrarle al usuario todo los campos que contiene la tabla ya que de esta manera evitamos que puedan estar en contacto con todo los registros existentes.

Ahora bien ya vimos  la creación de una vista a partir de una tabla pero de igual manera podemos hacer vista con combinación de tablas relacionales, veamos crearemos una vista a partir de las siguientes tablas:

De la siguientes tablas relaciones. vamos a crear una vista que muestre los números de lotes que han sido despachados de cada producto existente en catalogo.
 CREATE VIEW VwProductoLotes
 AS
 SELECT SP.ProductoID,SP.NombreProducto,Presentacion,SL.NumeroLote,
 SD.Cantidad AS CantidadDespachada
 FROM SivProductos AS SP 
 INNER JOIN SivProductoLote AS SL ON SL.objProductoID=SP.ProductoID
 INNER JOIN SivOrdenDespachoDetalle AS SD ON SD.objProductoID = SP.ProductoID 

Ejecutemos la consulta para crear la nueva vista, posteriormente hagamos un SELECT para ver los registro que nos va permitir  ver.


Realicemos el select ala vista para ver los registros:


Como nota importante las vistas así como nos pueden permitir ahorrar mucho trabajo en la creación de una consulta también tiene algunas limitantes como la mas habitual de no poder ordenar los registros es decir no podemos hacer uso de ORDER BY.



En estos caso los mas recomendables es ordenar los registros cuando consultemos la vista a partir de un select o en caso en que creemos un Procedimiento Almacenado o una Función que necesitemos para comunicar con una aplicación.

Ya vimos como crear una vista escribiendo codigo, ahora vamos a ver un ejemplo de como crear una vista utilizando el asistente del Management Studio de SQL SERVER.

Primero nos iremos al explorador de objetos dónde está creada nuestra base de datos y buscamos la opción que dice View o Vistas se los describo de esta manera ya que va depender del idioma en que tengamos el  Sql Management Studio.


Damos clic derecho sobre View y seleccionamos nueva View.


Nos va a cargar en  pantalla los nombre de toda las tablas existentes en la base de datos.


ahora vamos a seleccionar las 3 tablas que usamos para crear la vista con Transact Sql, las cuales son: SivProductos,SivProductoLotes y SivOrdenDespachoDetalle luego de haberlas seleccionado damos clic en  Add para agregar las 3 tablas al diseñador.


Si observamos en pantalla se nos va a cargar un diseñador donde tendremos las 3 tablas de donde seleccionaremos los registros. Ala par de cada tabla podemos  ver que hay unos checkbox los cuales nos van a servir para seleccionar los registros.


Ahora vamos a seleccionar los Lotes de productos que han sido incluidos en una orden de despacho, para realizar esto vamos a seleccionar los campos en los checkbox que hay al lado de cada tabla.

Luego de haber seleccionado los registros podemos observar que el diseñador automáticamente nos irá creado la consulta con los registros seleccionados. Para algunos puede ser algo más fácil de realizar ya que la opción de seleccionar los registros es más rápido que estar escribiendo la consulta mediante Transact Sql.


Acá podemos realizar un vista previa de los registros seleccionados, con esto podemos visualizar lo que el usuario final estará viendo, y también nos va permitir saber si hay que agregar algún campo más. Para realizar la vista previa de los registros damos clic derecho y clicamos en la opción Execute SQL.


Veamos el resultado previo que nos va a mostrar la vista creada con el asistente:



Efectivamente observamos los registros que lotes que han sido incluidos en un despacho de productos. Por ultimó si no vamos a incluir más campos a la vista hacemos clic para cerrar el asistente nos va preguntar si deseamos guardar la vista, decimos que si.



Y por último le asignamos un nombre con el cual quedará guardada nuestra vista.


Por último si necesitamos modificar nuestra vista actual nos vamos a colocar sobre la vista y vamos a seleccionar la opción Desing y nos va permitir editar la vista y guardar los cambios.


Si necesitamos hacer esta modificaciones mediante Transact Sql bien podemos realizarlo. todo va estar en cómo a cada uno vea que es mejor hacer las modificaciones.

Las vistas son muy importantes cuando tenemos un proyecto de desarrollo ya que haciendo uso de ellas podemos delimitar los campos que deseamos mostrarle al usuario final. tengamos en cuenta que siempre hay registros que son más importantes como por ejemplo números de cuentas que se vayas a almacenar son datos muy delicados que no se pueden mostrar.

Espero que este artículo sobre el uso de vistas les sea de mucha ayuda.

Publicar un comentario

0 Comentarios