Vistas (Views): consultas que cualquiera puede usar

Clase 8 de 26Curso de Gestión de Bases de Datos con SQL Server

Resumen

Compartir información con personas que no dominan SQL es uno de los retos más frecuentes en cualquier organización. Las vistas en SQL Server resuelven exactamente ese problema: permiten guardar consultas complejas con un nombre sencillo para que cualquier usuario las utilice como si fueran una tabla común. A continuación se explica cómo crearlas, modificarlas, inspeccionar su definición y eliminarlas cuando ya no sean necesarias.

¿Qué es una vista y por qué conviene usarla?

Una vista es una consulta guardada con un nombre que se puede invocar como si fuera una tabla [0:30]. La diferencia fundamental es que no almacena datos, sino únicamente la definición de la consulta. Cada vez que alguien la consulta, SQL Server ejecuta la query subyacente en ese instante y devuelve los resultados actualizados.

Usar vistas aporta tres beneficios principales [1:02]:

  • Abstracción: el usuario ve columnas con nombres claros sin preocuparse por la estructura interna de las tablas.
  • Seguridad: se puede conceder acceso a la vista sin dar acceso a las tablas base.
  • Mantenimiento: si cambia la lógica de negocio, se actualiza en un solo lugar y todos los consumidores reciben la nueva definición.

¿Cómo se crea una vista con CREATE VIEW?

La sintaxis básica es muy directa [1:30]:

sql CREATE VIEW nombre_vista AS SELECT columnas FROM tabla; GO

Un estándar recomendado es utilizar el prefijo VW en el nombre de la vista [2:00]. Esto facilita localizar las vistas en el explorador de objetos de SQL Server y mantiene un orden claro en cualquier motor de base de datos.

Por ejemplo, para la base de datos Tienda Latam se crea una vista que agrupa ventas por país, año y mes [2:10]:

sql CREATE VIEW VW_VentasPorPais AS SELECT codigo_pais, nombre_pais, anio, mes, COUNT(*) AS cantidad_pedidos, SUM(venta) AS ventas_totales, AVG(venta) AS ticket_promedio FROM ventas GROUP BY codigo_pais, nombre_pais, anio, mes; GO

Tras ejecutar el código, la vista aparece en la carpeta Vistas del explorador de objetos una vez que se actualiza [2:55].

¿Cómo se consulta una vista ya creada?

Se usa exactamente igual que una tabla [3:10]:

sql SELECT * FROM VW_VentasPorPais;

También se le pueden aplicar filtros, ordenamientos y cálculos adicionales. Por ejemplo, filtrar por Argentina y ordenar por año y mes, o bien agregar una suma histórica por país [3:30]:

sql SELECT nombre_pais, SUM(ventas_totales) AS total_historico FROM VW_VentasPorPais GROUP BY nombre_pais;

Para un usuario con conocimientos básicos de SQL, operar sobre una vista resulta más que suficiente.

¿Cómo modificar, inspeccionar y eliminar una vista?

¿Cómo se modifica una vista con ALTER VIEW?

Cuando cambian las reglas de negocio, se utiliza ALTER VIEW en lugar de eliminar y recrear [4:20]. La instrucción reemplaza la definición anterior por la nueva:

sql ALTER VIEW VW_VentasPorPais AS SELECT codigo_pais, nombre_pais, anio, mes, COUNT(*) AS cantidad_pedidos, SUM(venta) AS ventas_totales, MIN(venta) AS venta_minima, MAX(venta) AS venta_maxima, AVG(venta) AS ticket_promedio FROM ventas GROUP BY codigo_pais, nombre_pais, anio, mes; GO

En este ejemplo se agregan las columnas venta mínima y venta máxima [5:10]. Todos los usuarios que consulten la vista obtendrán automáticamente la nueva definición sin modificar sus propias consultas.

¿Cómo ver la definición de una vista?

Existen dos formas [5:55]:

  • Desde el explorador de objetos: clic derecho sobre la vista → Incluir vista comoCREATE o ALTER to → nueva ventana. Esto muestra el código DDL completo.
  • Con el procedimiento sp_helptext: ejecutando EXEC sp_helptext 'VW_VentasPorPais'; se obtiene la definición como resultado en forma de filas [6:20].

¿Cómo se elimina una vista con DROP VIEW?

Si la vista ya no es necesaria, se elimina con una sola instrucción [7:00]:

sql DROP VIEW IF EXISTS VW_VentasPorPais;

Tras ejecutar y actualizar el explorador, la vista desaparece por completo.

Las vistas son la primera herramienta de abstracción en SQL Server: no almacenan datos, pero sí la lógica. El siguiente nivel consiste en las vistas indexadas, que sí almacenan su resultado para mejorar el rendimiento.

Pon a prueba lo aprendido creando tres vistas para Tienda Latam: VW_VentasPorPais con ventas agrupadas por país, año y mes; VW_ProductosTopVentas con los veinte productos con mayor cantidad de unidades vendidas; y VW_ClientesSinPedidos con los clientes que nunca realizaron un pedido. Comparte tus resultados en los comentarios.