Vistas en SQL Server
- La vista es un objeto en la base de datos creado como resultado de una consulta.
- La vista se puede crear con datos de una o varias tablas de la base de datos.
- Las vistas pueden guardar listados en la base de datos con un conjunto de registros de consulta frecuente.
- Restringir la visualización de algunas columnas que están presente en tablas.
- Para mantener compatibilidad con versiones anteriores de SQL Server.
Instrucción Create View
Permite crear una vista
Sintaxis:
Create View [ Esquema .] NombreVista
AS Instrucción Select
Donde:
Esquema.NombreVista: especifica el nombre de la vista a crear.
Instrucción Select: es la instrucción Select que define la vista.
Instrucción Alter View
Permite modificar una vista
Alter View [ Esquema . ] NombreVista
As Instrucción Select
Instrucción Drop View
Permite eliminar una vista
Drop view [ Esquema . ] NombreVista
Ejercicios
Usando Northwind
use Northwind
go
1. Vista con los Productos descontinuados
Create view VistaProductosDescontinuados
As
Select P.ProductID As ‘Código’, P.ProductName As ‘Descripción’,
P.UnitPrice As ‘Precio’, P.UnitsInStock As ‘Stock’,
P.UnitsInStock As ‘En Orden’
from Products As P
where P.Discontinued = 1
go
2. Vista con los empleados
Create view VistaEmpleadosListado
As
select EmployeeID As ‘Código’,
Empleado = LastName + SPACE(1) + FirstName,
Format(BirthDate,’dd/MM/yyyy’) As ‘Fecha Nac.’
from Employees
go
3. Para listar los registros de la vista de Empleados
select * from VistaEmpleadosListado
order by [Fecha Nac.]
go
4. Vista de Productos y Categorias
Create View vistaProductosyCategoria
As
select P.ProductID As ‘Código’, P.ProductName,
P.UnitPrice As ‘Precio’, C.CategoryName
from Products As P
join Categories As C on P.CategoryID = C.CategoryID
go
5. Cambiar la vista con mas campos
Alter View vistaProductosyCategoria
As
select P.ProductID As ‘Código’, P.ProductName,
P.UnitPrice As ‘Precio’, C.CategoryName,
P.UnitsInStock As ‘Stock’,
P.UnitsOnOrder As ‘En Orden’
from Products As P
join Categories As C on P.CategoryID = C.CategoryID
go
6. Vista con los Clientes que compraron mas de 2000
Create view VistaClientesTopComprasMas2000
As
select C.CustomerID As ‘Código Cliente’, C.CompanyName As ‘Cliente’,
C.Address As ‘Dirección’, C.Country As ‘País’,
SUM(O.Freight) As ‘Total Comprado’
from Customers As C
join Orders As O on C.CustomerID = O.CustomerID
Group by C.CustomerID, C.CompanyName,C.Address, C.Country
Having SUM(O.Freight) > 2000
go
— Ver Funciones de Agregado, Joins, Agrupamientos
Importante
- En la definición de la consulta no se puede usar Order By salvo que se incluya Top.
- Todas las columnas de la definición de la vista deben tener nombre.
- El select de la definición de la vista no puede tener la cláusula Into Tabla.
- La vista puede tener hasta 1,024 columnas.
7. Vista con Order by y Top
Create view VistaClientesTopComprasMas2000Solo3
As
select Top 3 C.CustomerID As ‘Código Cliente’, C.CompanyName As ‘Cliente’,
C.Address As ‘Dirección’, C.Country As ‘País’,
SUM(O.Freight) As ‘Total Comprado’
from Customers As C
join Orders As O on C.CustomerID = O.CustomerID
Group by C.CustomerID, C.CompanyName,C.Address, C.Country
Having SUM(O.Freight) > 2000
order by SUM(O.Freight) desc
go