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 como → CREATE 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.