Vistas en SQL Server

Como crear 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.
  • Al usar una vista se puede restringir la visualización de algunas columnas que están presente en tablas.
  • Para mantener compatibilidad con versiones anteriores de SQL Server.
  • Puede que necesite crear índices en las tablas, ver Índices en vistas para mas información

Instrucción Create View

Permite crear una vista

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