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í).

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.