Una tabla guarda datos de verdad, ocupando espacio en el disco. Una vista no guarda nada: es una consulta guardada con un nombre, que se ejecuta cada vez que la usas. Esa es la diferencia de fondo, y a partir de ahí se explican todas las demás.
Qué es una tabla
Una tabla es la estructura básica de almacenamiento en una base de datos relacional: filas y columnas con datos reales guardados físicamente.
CREATE TABLE empleados (
id INT PRIMARY KEY,
nombre VARCHAR(100),
departamento VARCHAR(50),
salario DECIMAL(10,2)
);
Cuando insertas una fila en empleados, ese dato queda escrito en el disco. Si apagas el servidor y lo vuelves a encender, los datos siguen ahí.
Qué es una vista
Una vista es, literalmente, una consulta SELECT guardada bajo un nombre, para no tener que reescribirla cada vez.
CREATE VIEW empleados_it AS
SELECT id, nombre, salario
FROM empleados
WHERE departamento = 'IT';
A partir de ahora, puedes hacer:
SELECT * FROM empleados_it;
Y es exactamente como si hubieras ejecutado la consulta larga de arriba, pero escribiendo mucho menos. La vista no duplica los datos: sigue leyendo de la tabla empleados en tiempo real. Si cambias el salario de alguien en empleados, la vista lo refleja al instante, porque no es una copia, es una ventana hacia los datos reales.
La diferencia, en una tabla
| Tabla | Vista | |
|---|---|---|
| Guarda datos físicamente | Sí | No |
| Ocupa espacio en disco | Sí (los datos) | Prácticamente nada (solo la definición) |
| Se actualiza sola si cambian los datos base | No aplica (es la fuente) | Sí, siempre |
| Se puede insertar/actualizar directamente | Sí | A veces, con restricciones |
| Velocidad | Depende de índices | Depende de la consulta que ejecuta por debajo |
Para qué sirve una vista en la práctica
- Simplificar consultas repetitivas. Si cada semana ejecutas la misma consulta larga con varios
JOIN, la guardas como vista y listo. - Ocultar complejidad o columnas sensibles. Puedes dar acceso a una vista que solo muestra nombre y departamento, sin exponer la columna de salario, a un usuario que no debería verla.
- Dar una capa de estabilidad. Si cambias la estructura interna de las tablas pero mantienes la vista con el mismo resultado, las aplicaciones que la usan no se enteran del cambio.
Un matiz que se explica poco en clase
No todas las vistas se pueden actualizar directamente con INSERT o UPDATE. Si la vista mezcla varias tablas con JOIN, usa GROUP BY, o tiene funciones de agregación (SUM, COUNT), en la mayoría de motores de base de datos no podrás escribir en ella directamente, solo consultarla. Las vistas simples (basadas en una sola tabla, sin agregaciones) sí suelen permitir inserciones y actualizaciones, con algunas condiciones según el motor (MySQL, PostgreSQL, SQL Server tienen reglas ligeramente distintas aquí).
Pon a prueba lo que has entendido
Cambias el salario de un empleado en la tabla 'empleados'. ¿Qué pasa con una vista que consulta esa tabla?
Vistas materializadas: el punto intermedio
Existe un tercer concepto que resuelve el problema de rendimiento de las vistas normales: la vista materializada. A diferencia de una vista normal, que ejecuta la consulta cada vez que la llamas, una vista materializada sí guarda los resultados físicamente, como si fuera una tabla — pero hay que actualizarla manualmente o de forma programada para que refleje los cambios de las tablas base.
| Vista normal | Vista materializada | Tabla | |
|---|---|---|---|
| Guarda datos físicos | No | Sí | Sí |
| Se actualiza sola | Sí, siempre en tiempo real | No, hay que refrescarla | No aplica |
| Velocidad de consulta | Depende de la consulta subyacente | Rápida (datos ya calculados) | Rápida (con buenos índices) |
Es la opción típica cuando una consulta es tan compleja o pesada que ejecutarla cada vez sería demasiado lento, pero tampoco necesitas que el resultado esté actualizado al segundo — por ejemplo, un informe de ventas que se recalcula una vez al día.
Un ejemplo práctico de cuándo usar cada cosa
Imagina un sistema con una tabla pedidos muy grande. Si el departamento comercial necesita cada día un resumen de ventas por región, tienes tres opciones: repetir la consulta larga cada vez (lento y propenso a errores de copiar mal la consulta), crear una vista normal (más cómodo, pero sigue calculándose en cada consulta), o crear una vista materializada que se actualiza una vez por la noche (rápida de consultar durante el día, con el coste de no reflejar los pedidos de las últimas horas).
Resumen rápido
Una tabla almacena datos reales; una vista es una consulta guardada que lee esos datos cada vez que la llamas. Usa vistas para simplificar consultas complejas, controlar qué ve cada usuario, y proteger tus aplicaciones de cambios internos en la estructura de las tablas.
Sigue con la serie: las tablas que acabas de ver (empleados, pedidos) se apoyan siempre en una clave que identifica cada fila de forma única — lo ves en detalle en qué es una clave primaria en bases de datos, y en cómo se relacionan varias tablas entre sí en qué es una clave foránea en bases de datos.