A medida que tus bases de datos crecen, también lo hacen tus consultas SQL.
Llega un punto donde escribir el mismo SELECT una y otra vez deja de ser práctico.
Aquí es donde entran las vistas (VIEWs): una forma de guardar consultas como si fueran tablas virtuales, listas para reutilizar en cualquier momento.
Las vistas son una herramienta clave para:
- Simplificar consultas complejas.
- Proteger datos sensibles.
- Estandarizar reportes o indicadores.
En este artículo aprenderás qué son las vistas, cómo crearlas y mantenerlas, y verás ejemplos prácticos que puedes ejecutar en db-fiddle.com.
¿Qué es una vista en SQL?
Una vista (VIEW) es una consulta almacenada que se comporta como una tabla.
Cuando haces una consulta sobre una vista, el motor SQL ejecuta la consulta base y devuelve el resultado como si fueran datos reales.
👉 Piensa en una vista como una “ventana” hacia los datos:
No almacena información por sí misma (salvo las vistas materializadas), sino que muestra resultados derivados de otras tablas.
Sintaxis básica de CREATE VIEW
CREATE VIEW nombre_vista AS
SELECT columnas
FROM tablas
WHERE condiciones; Ejemplo 1: Crear una vista de empleados activos
Usando la tabla empleados:
CREATE VIEW vista_empleados_activos AS
SELECT nombre,
puesto,
salario,
fecha_contratacion,
id_departamento
FROM empleados
WHERE salario >= 70000; Ahora puedes consultar esta vista como si fuera una tabla:
SELECT * FROM vista_empleados_activos; Ejemplo 2: Vista con JOIN
Podemos combinar datos de dos tablas.
Supongamos que tenemos una tabla departamentos:
CREATE TABLE departamentos (
id_departamento INT PRIMARY KEY,
nombre_departamento VARCHAR(100)
);
INSERT INTO departamentos VALUES
(1, 'Ventas'),
(2, 'Marketing'),
(3, 'Finanzas'),
(4, 'Desarrollo'); Y creamos una vista uniendo ambas:
CREATE VIEW vista_empleados_departamentos AS
SELECT e.nombre,
e.puesto,
e.salario,
d.nombre_departamento
FROM empleados e
JOIN departamentos d
ON e.id_departamento = d.id_departamento; Consulta la vista:
SELECT * FROM vista_empleados_departamentos; Ejemplo 3: Actualizar una vista existente
CREATE OR REPLACE VIEW vista_empleados_activos AS
SELECT nombre, puesto, salario
FROM empleados
WHERE salario > 80000; 💡 En SQL Server se usa
ALTER VIEWen lugar deCREATE OR REPLACE VIEW.
Ejemplo 4: Eliminar una vista
DROP VIEW vista_empleados_departamentos; Tipos de vistas
| Tipo | Descripción | Disponibilidad |
|---|---|---|
| Vista estándar | Consulta virtual, no almacena datos. | Todos los motores |
| Vista materializada | Almacena el resultado de la consulta (mejor rendimiento, pero requiere actualización manual o programada). | PostgreSQL, SQL Server (Indexed View) |
Buenas prácticas
- Usa nombres descriptivos: Ej.
vista_empleados_activos. - **Evitar SELECT *: especifica las columnas necesarias.
- Agrega comentarios en la vista (si tu motor lo permite): documenta su propósito.
- Ten cuidado al usar funciones no determinísticas: pueden limitar el refresco o indexación.
- Controla los permisos: puedes dar acceso solo a la vista y no a la tabla base (seguridad).
Diferencias entre motores
| Motor SQL | Detalles clave |
|---|---|
| SQL Server | Usa CREATE VIEW, ALTER VIEW, DROP VIEW. Soporta vistas indexadas. |
| PostgreSQL | Soporta CREATE MATERIALIZED VIEW y refresco manual. |
| MySQL | CREATE VIEW estándar; no materializadas. |
| SQLite | Soporta vistas estándar, sin indexación. |
Conclusión
Las vistas en SQL son una herramienta esencial para mantener tu código organizado, seguro y eficiente.
Te permiten encapsular consultas complejas, reutilizarlas en reportes y limitar el acceso a los datos.
Practica estos ejemplos en db-fiddle.com y empieza a crear tus propias vistas reutilizables.