Introducción al Uso de Vistas en SQL Server
1. Introducción
Las vistas en SQL Server son consultas almacenadas que actúan como tablas virtuales. Son útiles para
simplificar consultas complejas, mejorar la seguridad y permitir la reutilización del código.
Tipos de vistas:
- Vistas simples: Basadas en una sola tabla.
- Vistas complejas: Combinan múltiples tablas y funciones.
- Vistas indexadas: Materializan datos para mejorar el rendimiento.
2. Preparación del entorno
Para este tutorial, asegúrate de tener la base de datos 'ventas' correctamente configurada. Usa SQL Server
Management Studio (SSMS) o cualquier cliente compatible con SQL Server.
3. Ejercicios prácticos
Ejercicio 1: Crear una vista básica
Crear una vista que muestre los nombres y ciudades de los clientes.
CREATE VIEW Vista_Clientes AS
SELECT nombre, ciudad
FROM cliente;
Ejercicio 2: Vista con una condición
Crear una vista que liste los clientes de la categoría 1.
Introducción al Uso de Vistas en SQL Server
CREATE VIEW Vista_ClientesCategoria1 AS
SELECT nombre, apellido1, ciudad
FROM cliente
WHERE categoria = 1;
Ejercicio 3: Vista combinando dos tablas
Mostrar el total de pedidos y el nombre del comercial asociado.
CREATE VIEW Vista_PedidosComercial AS
SELECT [Link], [Link] AS Nombre_Comercial, c.apellido1 AS Apellido_Comercial
FROM pedido p
JOIN comercial c ON p.id_comercial = [Link];
Ejercicio 4: Vista con agregación
Calcular el total de ventas por cliente.
CREATE VIEW Vista_TotalVentasCliente AS
SELECT [Link], cl.apellido1, SUM([Link]) AS Total_Ventas
FROM pedido p
JOIN cliente cl ON p.id_cliente = [Link]
GROUP BY [Link], cl.apellido1;
5. Alterar y Eliminar Vistas
Cuando necesitas modificar una vista existente, usa el comando ALTER VIEW. Si deseas eliminar una vista,
utiliza el comando DROP VIEW.
Ejemplo de ALTER VIEW
Introducción al Uso de Vistas en SQL Server
ALTER VIEW Vista_Clientes AS
SELECT nombre, apellido1, ciudad
FROM cliente;
Ejemplo de DROP VIEW
DROP VIEW Vista_ClientesCategoria1;
6. Ejemplos de Tipos de Vistas
Vista simple
Listar nombres y ciudades de los clientes.
CREATE VIEW Vista_Simple AS
SELECT nombre, ciudad
FROM cliente;
Vista compleja
Mostrar el total de ventas por cada comercial.
CREATE VIEW Vista_Compleja AS
SELECT [Link] AS Nombre_Comercial, c.apellido1 AS Apellido_Comercial, SUM([Link]) AS
Total_Ventas
FROM pedido p
JOIN comercial c ON p.id_comercial = [Link]
GROUP BY [Link], c.apellido1;
Vista indexada
Crear una vista indexada que liste comerciales con comisión > 5%.
Introducción al Uso de Vistas en SQL Server
CREATE VIEW Vista_Indexada_Comisiones
WITH SCHEMABINDING AS
SELECT id, nombre, comision
FROM [Link]
WHERE comision > 0.05;
GO
CREATE UNIQUE CLUSTERED INDEX IX_Comisiones ON Vista_Indexada_Comisiones(id);
Vista con funciones avanzadas
Filtrar pedidos realizados después de una fecha específica.
CREATE VIEW Vista_FiltrarPedidos AS
SELECT [Link], [Link], [Link], [Link] AS Cliente
FROM pedido p
JOIN cliente cl ON p.id_cliente = [Link]
WHERE [Link] > '2024-01-01';
7. Ejercicio Final Práctico
1. Crear una vista que combine cliente y pedido para listar clientes con más de un pedido.
2. Alterar la vista para añadir la ciudad del cliente.
3. Eliminar la vista cuando ya no sea necesaria.
CREATE VIEW Vista_ClientesPedidos AS
SELECT [Link], cl.apellido1, COUNT([Link]) AS Total_Pedidos
FROM cliente cl
JOIN pedido p ON [Link] = p.id_cliente
GROUP BY [Link], cl.apellido1
HAVING COUNT([Link]) > 1;