Consultas · objetos reutilizables

VIEW

Una vista asigna un nombre a una consulta para poder utilizar su resultado como si fuera una tabla.

Lectura: 5–7 minEjemplo comprobadoPráctica con pistas
Contenido de esta guía

Qué es una vista

Una VIEW es una consulta guardada con un nombre. Después de crearla, puedes escribir ese nombre en FROM igual que escribirías el nombre de una tabla.

La vista normal no guarda una copia independiente de las filas. Cuando la consultas, el motor obtiene los datos a partir de la consulta que define la vista. Por eso, si cambian las tablas base, el resultado visible también puede cambiar.

Sintaxis básica

Crear una vista
CREATE VIEW pedidos_en_curso AS
SELECT id, cliente_id, fecha, total
FROM pedidos
WHERE estado IN ('pendiente', 'enviado');

La parte situada después de AS es una consulta normal. La vista conserva su definición, no el resultado concreto que existía al crearla.

Consultar la vista

Usar la vista en FROM
SELECT id, cliente_id, fecha, total
FROM pedidos_en_curso
ORDER BY id
LIMIT 5;
Resultado comprobado en SQLite
idcliente_idfechatotal
10112025-05-02128.4
10222025-05-0449.5
10432025-05-11179.0
10542025-05-1569.9
10652025-05-181088.0

La consulta exterior puede añadir su propio filtro, orden o agrupación. La vista simplifica el punto de partida, pero no obliga a mostrar siempre todas sus filas.

Una vista no garantiza un orden. Aunque la consulta que la define parezca devolver las filas de cierta forma, escribe ORDER BY en la consulta final cuando el orden importe.

Error frecuente

Confundir una vista con una copia congelada

Una vista normal no es una fotografía de los datos. Si un pedido cambia de pendiente a cancelado, dejará de aparecer en pedidos_en_curso la próxima vez que consultes la vista.

Las vistas materializadas, disponibles en algunos motores, sí almacenan un resultado y requieren una actualización explícita o programada. Son un objeto distinto.

Comprueba lo aprendido

Básica · reutilización

Crea una vista de productos disponibles

Define una vista llamada productos_disponibles que muestre id, nombre, precio y stock de los productos cuyo stock sea mayor que cero.

Compatibilidad entre motores

PostgreSQL, MySQL, SQLite, SQL Server y Oracle permiten crear vistas, pero difieren en opciones como reemplazo, seguridad, vistas materializadas y actualización de datos. SQLite considera sus vistas de solo lectura para operaciones directas. Un disparador INSTEAD OF puede interceptar un INSERT, UPDATE o DELETE sobre la vista y modificar las tablas base, pero ese mecanismo debe diseñarse de forma explícita y no convierte la vista en actualizable por sí sola. Otros motores admiten cambios mediante ciertas vistas simples o mecanismos específicos. Comprueba siempre las reglas de tu motor antes de modificar datos a través de una vista.

Qué debes recordar

  • Una vista pone nombre a una consulta reutilizable.
  • Una vista normal no almacena una copia independiente del resultado.
  • Las tablas base siguen siendo la fuente de los datos.
  • La posibilidad de modificar datos mediante la vista depende del motor y de su definición.

Conceptos relacionados

Fuentes técnicas consultadas