Vistas (Views): consultas que cualquiera puede usar
Clase 8 de 26 • Curso de Gestión de Bases de Datos con SQL Server
Contenido del curso
Clase 8 de 26 • Curso de Gestión de Bases de Datos con SQL Server
Contenido del curso
Rubens A. Rangel Gomez
jefred bedoya
José Bernardo Navas Pleitez
Pablo Núñez
Una forma sencilla de entender una vista en SQL es compararla con una arrow function de JavaScript. Ambas encapsulan lógica que puede reutilizarse sin necesidad de reescribirla cada vez. La diferencia es que una vista solo guarda una consulta SELECT y devuelve datos cuando se consulta, mientras que una función en JavaScript puede recibir parámetros y ejecutar lógica más compleja. Aun así, la idea es similar: reutilizar lógica para hacer el código más limpio, modular y fácil de mantener.
Las vistas funcionan como tablas virtuales que encapsulan consultas complejas, permitiendo reutilizar lógica sin repetir código. Son herramientas de abstracción que simplifican el acceso a los datos y fortalecen la seguridad al ocultar columnas sensibles.
Al tratar una vista como una tabla estándar, facilitas el mantenimiento y garantizas que los usuarios finales interactúen solo con la información necesaria, protegiendo la integridad del esquema original.
Comparto codigod elas tres vistas propuestas VW_VentasPorPais, VWProductosTopVentas y VW_ClinetesSinPedidos
CREATE VIEW VW_VentasPorPais AS WITH Ventas AS ( SELECT pa.NombrePais AS Pais, YEAR(p.FechaPedido) AS Anio, MONTH(p.FechaPedido) AS Mes, p.Total FROM Pedidos p INNER JOIN Clientes c ON p.ClienteID = c.ClienteID INNER JOIN Paises pa ON c.PaisID = pa.PaisID ) SELECT Pais, Anio, Mes, SUM(Total) AS VentasTotales FROM Ventas GROUP BY Pais, Anio, Mes; GO
- Top 20 productos con mayor cantidad vendida CREATE VIEW VW_ProductosTopVentas AS WITH VentasProducto AS ( SELECT pr.ProductoID, pr.NombreProducto, dp.Cantidad FROM DetallePedidos dp INNER JOIN Productos pr ON dp.ProductoID = pr.ProductoID ) SELECT TOP 20 ProductoID, NombreProducto, SUM(Cantidad) AS TotalUnidadesVendidas FROM VentasProducto GROUP BY ProductoID, NombreProducto ORDER BY TotalUnidadesVendidas DESC; GO
-- Clientes que nunca han hecho pedidos CREATE VIEW VW_ClientesSinPedidos AS WITH ClientesConPedidos AS ( SELECT DISTINCT ClienteID FROM Pedidos ) SELECT c.ClienteID, c.Nombre, c.Apellido FROM Clientes c LEFT JOIN ClientesConPedidos cp ON c.ClienteID = cp.ClienteID WHERE cp.ClienteID IS NULL; GO
hace tiempo mantengo vistas Pero desconocía del sp_helptext. excelente para documentación. excelente aporte!