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.
| Herramienta | Cuánto dura el nombre | Uso típico |
|---|---|---|
| CTE | una sola sentencia | organizar una consulta por etapas |
| Vista | permanece en el esquema hasta eliminarla | reutilizar 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
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.
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;| pedido_id | cliente | total | estado |
|---|---|---|---|
| 101 | Ana Torres | 128,40 | enviado |
| 102 | Luis Martín | 49,50 | pendiente |
| 104 | Marta Ruiz | 179,00 | enviado |
| 105 | Diego López | 69,90 | pendiente |
| 106 | Sara Gómez | 1088,00 | enviado |
| 107 | Marta Ruiz | 36,90 | enviado |
Cómo funciona
- La definición conserva la relación entre
pedidosyclientes. - El filtro excluye los pedidos cancelados cada vez que se consulta la vista.
- La consulta posterior puede seleccionar, filtrar u ordenar las columnas expuestas por la vista.
Un error habitual
Tratar la vista como si fuera siempre actualizable
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
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…
Empieza con CREATE VIEW.
Añade AS antes de SELECT.
Filtra con WHERE stock > 0.
Solución
CREATE VIEW productos_disponibles AS SELECT id, nombre, stock FROM productos WHERE stock > 0;La vista encapsula una consulta frecuente sin duplicar datos.
Puedes consultar la solución y volver a intentarlo. La práctica se completa cuando tu consulta funciona.
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.