🔹 Introducción
- 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 conHAVING
. - 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
id | nombre | edad | ciudad |
---|---|---|---|
1 | Ana | 20 | Buenos Aires |
2 | Juan | 17 | Ciudad de México |
3 | Laura | 22 | Madrid |
4 | Pedro | 18 | Madrid |
cursos
id | curso |
---|---|
1 | Matemáticas |
2 | Historia |
3 | Inglés |
inscripciones
alumno_id | curso_id |
---|---|
1 | 1 |
1 | 3 |
2 | 2 |
3 | 1 |
4 | 3 |
🔹 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:
nombre | edad | ciudad |
---|---|---|
Ana | 20 | Buenos Aires |
Laura | 22 | Madrid |
Pedro | 18 | Madrid |
🔹 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:
nombre | curso |
---|---|
Ana | Matemáticas |
Ana | Inglés |
Juan | Historia |
Laura | Matemáticas |
Pedro | Inglé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:
curso | cantidad_alumnos |
---|---|
Matemáticas | 2 |
Historia | 1 |
Inglés | 2 |
🔹 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
- Crea una vista llamada
vista_madrid
que muestre solo a los alumnos que viven en Madrid. - Crea una vista llamada
vista_alumnos_historia
que muestre el nombre de los alumnos inscritos en el curso de Historia. - 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?
🔹 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 conSELECT
. - 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.