Vistas en SQL: Qué Son, Cómo se Crean y Cuándo Conviene Usarlas

Aprende qué es una vista en SQL, cómo crearla con CREATE VIEW, sus ventajas para simplificar consultas y proteger datos, y sus límites.

Compartir en Linkedin Compartir en WhatsApp

Tiempo estimado de lectura: 7 minutos

Imagen del artículo Vistas en SQL: Qué Son, Cómo se Crean y Cuándo Conviene Usarlas

En casi cualquier base de datos hay consultas que se escriben una y otra vez: el mismo JOIN entre tres tablas, el mismo cálculo de promedios, el mismo filtro para mostrar solo los registros activos. Repetir ese código es incómodo y peligroso, porque si cambia una regla hay que corregirla en muchos sitios. Las vistas (views) existen para resolver ese problema. En este artículo verás qué son, cómo se crean, para qué sirven y qué precauciones conviene tener.

¿Qué es una vista?

Una vista es una consulta SELECT guardada en la base de datos con un nombre propio. Una vez creada, se puede consultar como si fuera una tabla: admite WHERE, ORDER BY, JOINs con otras tablas, etc.

La diferencia fundamental es que una vista normal no almacena datos. Solo guarda la definición de la consulta. Cada vez que alguien la consulta, el motor de base de datos ejecuta esa definición y devuelve los datos actuales de las tablas originales. Por eso se suele decir que una vista es una “tabla virtual”.

Un ejemplo práctico

Imagina la base de datos de un instituto con tres tablas: estudiantes, cursos y matriculas (que relaciona estudiantes con cursos y guarda la nota final). Para ver un listado legible de notas habría que escribir:

SELECT e.nombre, e.apellido, c.titulo AS curso, m.nota_final
FROM matriculas m
JOIN estudiantes e ON e.id = m.estudiante_id
JOIN cursos c ON c.id = m.curso_id;

Con una vista, esa consulta se guarda una sola vez:

CREATE VIEW v_notas_estudiantes AS
SELECT e.nombre, e.apellido, c.titulo AS curso, m.nota_final
FROM matriculas m
JOIN estudiantes e ON e.id = m.estudiante_id
JOIN cursos c ON c.id = m.curso_id;

Y a partir de ahí cualquiera puede escribir algo tan simple como:

SELECT nombre, apellido, nota_final
FROM v_notas_estudiantes
WHERE curso = 'Matemáticas I'
ORDER BY nota_final DESC;

Vistas con cálculos y agrupaciones

Las vistas también pueden contener funciones de agregación. Por ejemplo, un resumen por curso:

CREATE VIEW v_resumen_cursos AS
SELECT c.titulo AS curso,
       COUNT(m.estudiante_id) AS total_matriculados,
       AVG(m.nota_final) AS nota_media
FROM cursos c
LEFT JOIN matriculas m ON m.curso_id = c.id
GROUP BY c.titulo;

Así, la dirección del instituto puede consultar v_resumen_cursos sin saber nada de JOINs ni de GROUP BY.

Ventajas de usar vistas

  • Simplicidad: esconden la complejidad de consultas largas detrás de un nombre claro.
  • Reutilización y coherencia: la lógica se define una vez. Si cambia, por ejemplo, la forma de calcular la nota media, se modifica solo la vista.
  • Seguridad: se puede dar permiso de lectura sobre la vista sin dar acceso a las tablas. Así se ocultan columnas sensibles, como datos personales o de pago.
  • Independencia de la estructura: si las tablas se reorganizan, una vista puede mantener el “formato antiguo” para que informes y aplicaciones sigan funcionando.

Un ejemplo de permisos en SQL estándar sería:

GRANT SELECT ON v_resumen_cursos TO rol_direccion;

Vistas normales y vistas materializadas

Algunos sistemas ofrecen además vistas materializadas, que sí guardan físicamente el resultado de la consulta. Son útiles para informes pesados, porque la lectura es mucho más rápida, pero sus datos no se actualizan solos: hay que refrescarlos.

AspectoVista normalVista materializada
¿Guarda datos?No, solo la consultaSí, una copia del resultado
¿Datos siempre actualizados?SíSolo tras refrescarla
Velocidad de lecturaLa misma que la consulta originalNormalmente mucho mayor
Ocupa espacio en discoPrácticamente noSí
DisponibilidadCasi todos los motoresPostgreSQL y Oracle, entre otros; SQL Server usa “vistas indexadas”; MySQL no la tiene de forma nativa

¿Se pueden modificar datos a través de una vista?

Depende de la vista. En general, las vistas basadas en una sola tabla, sin GROUP BY, sin DISTINCT y sin funciones de agregación, son actualizables: un INSERT, UPDATE o DELETE sobre ellas modifica la tabla de origen. Una vista como v_resumen_cursos, en cambio, es solo de lectura, porque no tiene sentido “actualizar una media”.

La opción WITH CHECK OPTION evita que, a través de la vista, se inserten o modifiquen filas que luego no cumplirían su condición WHERE. Las reglas concretas varían entre motores, así que conviene revisar la documentación del que uses.

Errores frecuentes y buenas prácticas

  • Pensar que una vista acelera las consultas: una vista normal ejecuta la misma consulta de siempre. El rendimiento depende de los índices y del diseño de la consulta.
  • Encadenar demasiadas vistas: vistas que usan vistas que usan otras vistas se vuelven difíciles de mantener y de optimizar.
  • Usar SELECT *: mejor listar las columnas de forma explícita para evitar sorpresas cuando cambie la tabla.
  • No documentar dependencias: borrar o renombrar una columna puede romper vistas que la usan.
  • Nombres poco claros: un prefijo como v_ o vw_ ayuda a distinguir vistas de tablas.

Para modificar una vista, muchos motores aceptan CREATE OR REPLACE VIEW o ALTER VIEW, y para eliminarla se usa DROP VIEW nombre_vista;.

Conclusión

Las vistas son una herramienta sencilla que aporta orden, seguridad y claridad a cualquier base de datos: convierten consultas complejas en tablas virtuales fáciles de usar y permiten controlar quién ve qué información. Saber cuándo usar una vista normal, cuándo una materializada y cuándo una vista puede actualizarse es un paso importante para trabajar con SQL de forma profesional. Si quieres profundizar en modelado, consultas y administración de datos, revisa los cursos gratuitos de bases de datos disponibles en Cursa.

Qué Es un Motor de Videojuegos y Cómo Funciona el Bucle de Juego

Descubre qué hace un motor de videojuegos, cómo funciona el bucle de juego y qué papel cumplen el renderizado, la física y el delta time.

Claves Primarias y Foráneas: Cómo se Relacionan las Tablas en una Base de Datos

Aprende qué son las claves primarias y foráneas, cómo conectan tablas, qué tipos de relaciones existen y por qué protegen la integridad de tus datos.

Qué Es el DNS: Cómo tu Navegador Encuentra un Sitio Web en Milisegundos

Entiende cómo funciona el sistema de nombres de dominio, qué son los registros A, CNAME y MX, y por qué a veces los cambios tardan.

Cifrado de Extremo a Extremo: Cómo Funciona y Qué Protege Realmente

Explicación sencilla del cifrado de extremo a extremo: claves pública y privada, qué protege, qué no protege y por qué importa.

Memoria RAM y almacenamiento: por qué no son lo mismo

Diferencias entre RAM y disco, qué hace cada uno, qué pasa cuando falta memoria y cuál conviene ampliar primero.

Qué es el DOM y Cómo lo Usa JavaScript para Cambiar una Página Web

Descubre qué es el DOM, cómo el navegador convierte el HTML en un árbol de nodos y cómo JavaScript lo modifica en tiempo real.

La Regla 3-2-1 de las Copias de Seguridad: Cómo Proteger tus Archivos de Verdad

Descubre en qué consiste la regla 3-2-1 de respaldo, los tipos de copia que existen y los errores más comunes al proteger la información.

Diagramas de flujo y pseudocódigo: cómo planificar un programa antes de escribirlo

Aprende a usar diagramas de flujo y pseudocódigo para diseñar algoritmos claros antes de escribir una sola línea de código.