Módulo 5 · Consultas avanzadas

Guarda consultas reutilizables con vistas

Crea una vista y consúltala como si fuera una tabla.

18 minNivel IntermedioAntes necesitas: Consultas con filtros y JOIN

0 de 45 lecciones

Al terminar, podrás

  • Explicar qué guarda una vista y qué no guarda.
  • Crear y consultar una vista con nombres de columnas claros.
  • Distinguir una vista normal de una tabla y reconocer diferencias de actualización entre motores.

Recupera lo aprendido: ¿Cuánto tiempo existe el nombre declarado por una CTE?

La idea clave

Una vista asigna un nombre a una consulta. Cuando haces SELECT sobre ella, el motor obtiene el resultado a partir de las tablas subyacentes. Una vista normal no es una copia independiente de las filas.

Modelo mental: una tabla guarda datos; una vista guarda una forma de consultarlos. Si cambian los pedidos, cambia lo que devuelve la vista.

CTE y vista: se parecen, pero su alcance cambia
HerramientaCuánto dura el nombreUso típico
CTEuna sola sentenciaorganizar una consulta por etapas
Vistapermanece en el esquema hasta eliminarlareutilizar una consulta con un nombre estable

Una vista normal tampoco es una “foto” de los datos. Lo que persiste es su definición; el resultado se obtiene al consultarla.

La sintaxis básica

Patrón portable
CREATE VIEW nombre_vista AS
SELECT columnas
FROM tabla
WHERE condicion;

SELECT *
FROM nombre_vista;

Ejemplo paso a paso

Crearemos una vista que reúna los pedidos no cancelados con el nombre del cliente. El alias pedido_id evita confundir el identificador del pedido con el del cliente.

Definición de la vista
CREATE VIEW pedidos_activos AS
SELECT p.id AS pedido_id,
       c.nombre AS cliente,
       p.total,
       p.estado
FROM pedidos AS p
JOIN clientes AS c ON c.id = p.cliente_id
WHERE p.estado <> 'cancelado';

SELECT pedido_id, cliente, total, estado
FROM pedidos_activos
ORDER BY pedido_id
LIMIT 6;
Primeras seis filas de pedidos_activos
pedido_idclientetotalestado
101Ana Torres128,40enviado
102Luis Martín49,50pendiente
104Marta Ruiz179,00enviado
105Diego López69,90pendiente
106Sara Gómez1088,00enviado
107Marta Ruiz36,90enviado

Cómo funciona

  1. La definición conserva la relación entre pedidos y clientes.
  2. El filtro excluye los pedidos cancelados cada vez que se consulta la vista.
  3. La consulta posterior puede seleccionar, filtrar u ordenar las columnas expuestas por la vista.
Comprueba tu comprensión

¿Qué ocurre si el pedido 102 cambia de pendiente a enviado?

Un error habitual

Tratar la vista como si fuera siempre actualizable

Suposición peligrosa
UPDATE pedidos_activos
SET total = 0
WHERE pedido_id = 102;

La posibilidad de modificar datos mediante una vista depende de su definición y del motor. En SQLite las vistas son de solo lectura; un trigger INSTEAD OF puede definir qué debe ocurrir ante una operación de escritura sobre la vista. Otros motores permiten actualizar determinadas vistas simples. Para el aprendizaje inicial, modifica la tabla base salvo que la documentación de tu motor confirme el comportamiento.

Practica con datos

Laboratorio SQL

Resuelve la consulta

Pendiente

Escribe la sentencia SQL que cree la vista productos_disponibles con id, nombre y stock de productos con stock mayor que 0.

Resultado esperado: la vista productos_disponibles con las columnas id, nombre y stock.

Ver tablas y datos

Cargando la estructura del ejercicio…

La consulta usa datos ficticios y se ejecuta solo en este navegador.

Fuentes técnicas consultadas

La sintaxis básica es común, pero las reglas de actualización, seguridad y sustitución de una vista cambian según el motor.

Comprueba si puedes explicarlo

Si un producto pasa de stock 0 a stock 5, ¿aparecerá al volver a consultar productos_disponibles?

Ver respuesta razonada

Sí. La vista normal vuelve a aplicar su consulta sobre los datos actuales. Conserva la definición de la consulta; no guarda una copia fija de sus filas.

Responde antes de abrir la explicación. Si necesitaste ayuda, cierra la respuesta y vuelve a explicarlo con tus palabras antes de dar la lección por aprendida.

Qué debes recordar

  • Una vista normal guarda una consulta, no una copia independiente de sus filas.
  • Expón únicamente las columnas necesarias y usa nombres claros.
  • Comprueba en la documentación de tu motor si una vista concreta admite modificaciones.

A continuación: continúa con funciones de ventana.

Conceptos relacionados