📘 Lección 11: Vistas (Views) en SQL

🔹 Introducción

Hasta ahora aprendiste a:

  • Consultar y filtrar datos (SELECT, WHERE).
  • Resumir información con funciones de agregación (COUNT, AVG, MIN, MAX).
  • Agrupar resultados con GROUP BY y filtrarlos con HAVING.
  • Combinar tablas con JOIN.
  • Usar subconsultas dentro de otras consultas.

👉 El problema: a veces las consultas se vuelven largas, repetitivas o difíciles de leer.

✅ La solución: crear una vista (VIEW).

Una vista es como una consulta guardada que se comporta como una tabla virtual.

  • No almacena los datos físicamente (usa los datos de las tablas originales).
  • Permite simplificar el trabajo.
  • Se puede consultar igual que una tabla.

🔹 Sintaxis básica

CREATE VIEW nombre_vista AS
SELECT columnas
FROM tabla
WHERE condición;

👉 Luego se usa igual que una tabla:

SELECT * FROM nombre_vista;

🔹 1. Nuestra base de ejemplo

Seguimos con nuestras tablas:

alumnos

idnombreedadciudad
1Ana20Buenos Aires
2Juan17Ciudad de México
3Laura22Madrid
4Pedro18Madrid

cursos

idcurso
1Matemáticas
2Historia
3Inglés

inscripciones

alumno_idcurso_id
11
13
22
31
43

🔹 2. Ejemplo simple: vista de alumnos mayores de edad

Creamos una vista que contenga solo a los alumnos con edad mayor o igual a 18:

CREATE VIEW alumnos_mayores AS
SELECT nombre, edad, ciudad
FROM alumnos
WHERE edad >= 18;

👉 Ahora podemos usar esta vista como si fuera una tabla:

SELECT * FROM alumnos_mayores;

📊 Resultado esperado:

nombreedadciudad
Ana20Buenos Aires
Laura22Madrid
Pedro18Madrid

🔹 3. Ejemplo con JOIN en una vista

Podemos crear una vista que muestre el nombre de cada alumno y el curso en el que está inscrito:

CREATE VIEW vista_alumnos_cursos AS
SELECT a.nombre, c.curso
FROM inscripciones i
INNER JOIN alumnos a ON i.alumno_id = a.id
INNER JOIN cursos c ON i.curso_id = c.id;

👉 Consultando la vista:

SELECT * FROM vista_alumnos_cursos;

📊 Resultado esperado:

nombrecurso
AnaMatemáticas
AnaInglés
JuanHistoria
LauraMatemáticas
PedroInglés

🔹 4. Ejemplo con funciones de agregación

Podemos crear una vista que muestre la cantidad de alumnos por curso:

CREATE VIEW vista_cantidad_por_curso AS
SELECT c.curso, COUNT(i.alumno_id) AS cantidad_alumnos
FROM cursos c
LEFT JOIN inscripciones i ON c.id = i.curso_id
GROUP BY c.curso;

👉 Consultando la vista:

SELECT * FROM vista_cantidad_por_curso;

📊 Resultado esperado:

cursocantidad_alumnos
Matemáticas2
Historia1
Inglés2

🔹 5. Modificar y eliminar vistas

  • Para modificar una vista, se usa CREATE OR REPLACE VIEW.
  • Para eliminar una vista, se usa:
DROP VIEW nombre_vista;

🔹 6. Ventajas de usar vistas

  • Simplifican consultas complejas.
  • Mejoran la legibilidad del código SQL.
  • Reutilización: escribís una consulta una vez y la usás cuantas veces quieras.
  • Pueden servir como capa de seguridad: un usuario puede consultar la vista sin tener acceso directo a las tablas originales.

🔹 7. Ejercicio práctico

  1. Crea una vista llamada vista_madrid que muestre solo a los alumnos que viven en Madrid.
  2. Crea una vista llamada vista_alumnos_historia que muestre el nombre de los alumnos inscritos en el curso de Historia.
  3. Crea una vista llamada vista_promedio_ciudad que muestre el promedio de edad por ciudad.

🔹 Soluciones

CREATE VIEW vista_madrid AS
SELECT * FROM alumnos
WHERE ciudad = 'Madrid';
CREATE VIEW vista_alumnos_historia AS
SELECT a.nombre
FROM alumnos a
JOIN inscripciones i ON a.id = i.alumno_id
JOIN cursos c ON i.curso_id = c.id
WHERE c.curso = 'Historia';
CREATE VIEW vista_promedio_ciudad AS
SELECT ciudad, AVG(edad) AS promedio
FROM alumnos
GROUP BY ciudad;

📝 Mini Quiz

 

Resultados

#1. ¿Qué es una vista en SQL?

#2. ¿Qué comando se usa para eliminar una vista?

#3. Si queremos reutilizar una consulta compleja de forma más sencilla, ¿qué deberíamos usar?

Previa
Finalizar

🔹 Resumen de la lección

  • Una vista (VIEW) es una consulta guardada que se comporta como una tabla virtual.
  • Se crean con CREATE VIEW y se consultan con SELECT.
  • Se pueden usar en vistas simples, con JOIN, o con funciones de agregación.
  • Se eliminan con DROP VIEW.
  • Son muy útiles para simplificar, reutilizar y proteger consultas.

👉 En la próxima lección aprenderás sobre funciones de texto y fechas (UPPER, LOWER, CONCAT, NOW, YEAR, MONTH), que te permitirán trabajar con cadenas de texto y valores de tiempo de forma más eficiente.

🔗 Este contenido pertenece al Curso SQL completo. Accede para descubrir más lecciones.

Scroll al inicio