Saltar al contenido

Mentoring

Cómo crear una vista en SQL Server

Aprende a crear, consultar, modificar y eliminar vistas en SQL Server con ejemplos prácticos.

Mentoring 3 min de lectura

Actualizado el

Vistas en SQL Server

Una vista en SQL Server es una consulta guardada en la base de datos. Se consulta como una tabla, pero conserva una consulta sobre sus objetos base: no es una copia autónoma de sus filas. La sintaxis de esta guía es específica de SQL Server.

Crear una vista en SQL Server

CREATE VIEW debe ser la primera sentencia de su batch. GO es un separador reconocido por herramientas cliente como SSMS, no una sentencia Transact-SQL.

GO
CREATE VIEW dbo.VistaEmpleadosFinanzas AS
SELECT nombre, apellido, departamento
FROM dbo.Empleados
WHERE departamento = 'Finanzas';
GO

Después puedes usarla así:

SELECT * FROM VistaEmpleadosFinanzas;

Crear una vista con JOIN

CREATE VIEW dbo.VistaPedidosClientes AS
SELECT
  c.Nombre AS Cliente,
  p.Id AS PedidoId,
  p.Total,
  p.Fecha
FROM dbo.Pedidos p
JOIN dbo.Clientes c ON c.Id = p.ClienteId;

Esta vista deja preparada una consulta frecuente entre pedidos y clientes y simplifica su lectura. Que la definición incluya un JOIN no garantiza que la vista sea actualizable.

Modificar una vista

Para cambiar una vista existente usa ALTER VIEW.

ALTER VIEW dbo.VistaEmpleadosFinanzas AS
SELECT nombre, apellido, email, departamento
FROM dbo.Empleados
WHERE departamento = 'Finanzas';

Si no quieres comprobar antes si la vista existe, CREATE OR ALTER VIEW crea la definición o actualiza la existente en una sola sentencia:

CREATE OR ALTER VIEW dbo.VistaEmpleadosFinanzas AS
SELECT nombre, apellido, email, departamento
FROM dbo.Empleados
WHERE departamento = 'Finanzas';

Al igual que CREATE VIEW y ALTER VIEW, debe ocupar la primera sentencia de su batch.

Eliminar una vista

DROP VIEW IF EXISTS dbo.VistaEmpleadosFinanzas;

WITH SCHEMABINDING

WITH SCHEMABINDING vincula la vista al esquema de sus dependencias y evita cambios incompatibles en los objetos base mientras exista esa dependencia. Exige referencias con esquema explícito y columnas enumeradas:

CREATE VIEW dbo.VistaPedidos
WITH SCHEMABINDING
AS
SELECT p.Id, p.ClienteId, p.Total
FROM dbo.Pedidos AS p;

Cuándo usar vistas

Las vistas son útiles cuando quieres:

  • Reutilizar una consulta compleja.
  • Ocultar columnas que no deben consultar ciertos usuarios.
  • Simplificar informes o consultas de lectura.
  • Centralizar una regla de consulta para no repetirla en varios sitios.

Una vista no mejora el rendimiento por sí sola: si la consulta interna es lenta, revisa los planes de ejecución y los índices de las tablas base.

Buenas prácticas

  • Usa nombres claros, por ejemplo VistaClientesActivos.
  • No metas lógica innecesaria si una consulta simple basta.
  • Revisa el rendimiento de la consulta base.
  • Evita usar SELECT * en vistas que deban mantenerse a largo plazo.
  • Documenta de qué tablas depende cada vista si el proyecto es grande.

Límites de las vistas en SQL Server

  • CREATE VIEW y ALTER VIEW deben ser la primera sentencia de su batch.
  • Una vista admite un máximo de 1.024 columnas.
  • No se admite ORDER BY salvo que esté asociado a TOP u OFFSET; aun así, no lo uses como garantía del orden al consultar la vista.
  • La definición no admite INTO, OPTION, tablas temporales ni variables de tabla.
  • La actualización directa está limitada: en el caso normal debe afectar columnas de una sola tabla base y no incluir agregados, expresiones ni UNION; otros escenarios requieren un diseño específico, por ejemplo triggers INSTEAD OF.
  • El rendimiento depende de la consulta y de los índices de las tablas base.

Si trabajas con otro SGBD, consulta la guía separada sobre vistas en MySQL; sus opciones y limitaciones no son intercambiables con las de SQL Server.