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
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.
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.
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.
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.
0 Comentarios