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

TablaVista
Guarda datos físicamenteNo
Ocupa espacio en discoSí (los datos)Prácticamente nada (solo la definición)
Se actualiza sola si cambian los datos baseNo aplica (es la fuente)Sí, siempre
Se puede insertar/actualizar directamenteA veces, con restricciones
VelocidadDepende de índicesDepende 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 normalVista materializadaTabla
Guarda datos físicosNo
Se actualiza solaSí, siempre en tiempo realNo, hay que refrescarlaNo aplica
Velocidad de consultaDepende de la consulta subyacenteRá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.