Puedes ejecutar cualquier consulta SQL en nuestra consola interactiva: Abrir consola SQL →
VIEWS en SQL: crea vistas para simplificar consultas complejas
Una VIEW es una tabla virtual basada en una consulta. No almacena datos por sí misma, pero permite reutilizar consultas complejas, mejorar seguridad y simplificar reportes.
Tabla de contenidos
1. ¿Qué es una VIEW?
Una VIEW es una tabla virtual basada en una consulta. Se comporta como una tabla, pero sus datos provienen de otras tablas.
CREATE VIEW usuarios_activos AS
SELECT nombre, email
FROM usuarios
WHERE activo = TRUE;
2. Crear una VIEW
CREATE VIEW vista_pedidos AS
SELECT u.nombre, p.producto, p.fecha
FROM usuarios u
JOIN pedidos p ON u.id = p.usuario_id;
3. Usar una VIEW
SELECT * FROM vista_pedidos;
4. Actualizar una VIEW
CREATE OR REPLACE VIEW vista_pedidos AS
SELECT u.nombre, p.producto, p.estado
FROM usuarios u
JOIN pedidos p ON u.id = p.usuario_id;
5. Eliminar una VIEW
DROP VIEW vista_pedidos;
6. Vistas materializadas
Una vista materializada sí almacena datos y puede refrescarse manual o automáticamente.
CREATE MATERIALIZED VIEW ventas_totales AS
SELECT producto, SUM(precio) AS total
FROM ventas
GROUP BY producto;
7. Ejemplos prácticos
CREATE VIEW usuarios_sin_pedidos AS
SELECT u.nombre
FROM usuarios u
LEFT JOIN pedidos p ON u.id = p.usuario_id
WHERE p.id IS NULL;
CREATE VIEW productos_caros AS
SELECT nombre, precio
FROM productos
WHERE precio > 50;
CREATE VIEW resumen_ventas AS
SELECT producto, COUNT(*) AS cantidad
FROM ventas
GROUP BY producto;
8. Ejercicios para practicar
- Crea una vista de usuarios activos.
- Crea una vista de productos caros.
- Crea una vista con JOIN entre usuarios y pedidos.
- Actualiza una vista existente.
- Explica para qué sirven las vistas.
CREATE VIEW usuarios_activos AS
SELECT * FROM usuarios
WHERE activo = TRUE;
CREATE VIEW productos_caros AS
SELECT nombre, precio
FROM productos
WHERE precio > 50;
CREATE VIEW vista_usuarios_pedidos AS
SELECT u.nombre, p.producto
FROM usuarios u
JOIN pedidos p ON u.id = p.usuario_id;
CREATE OR REPLACE VIEW productos_caros AS
SELECT nombre, precio
FROM productos
WHERE precio > 100;
-- Las vistas sirven para simplificar consultas y mejorar seguridad.
9. Mini‑proyecto: Vista de reporte de ventas
CREATE VIEW reporte_ventas AS
SELECT producto, COUNT(*) AS cantidad, SUM(precio) AS total
FROM ventas
GROUP BY producto;
10. Errores comunes
- Confundir vistas con tablas reales.
- Intentar insertar datos directamente en una vista no actualizable.
- Crear vistas demasiado complejas sin necesidad.
- Olvidar actualizar vistas materializadas.
11. Preguntas frecuentes
¿Una vista almacena datos?
Las vistas normales no; las materializadas sí.
¿Puedo hacer JOIN dentro de una vista?
Sí, es muy común.