10 Ejercicios resueltos de Comandos SQL en MySQL

Domina las bases de datos con nuestra guía práctica: 10 Ejercicios resueltos de Comandos SQL en MySQL

¿Listo para sumergirte en el mundo de las bases de datos? SQL (Structured Query Language) es el lenguaje que te permite comunicarte con ellas, y MySQL es uno de los sistemas de gestión de bases de datos más populares para hacerlo. En esta guía, no solo te daremos la teoría, sino que te retaremos a ponerla en práctica. ¡Prepárate para aprender haciendo!

Aprendizaje Teórico: Los Comandos SQL Esenciales

Antes de lanzarnos a los ejercicios, repasemos los comandos básicos que usaremos. Piensa en ellos como las herramientas en tu caja para gestionar y consultar datos.

  • CREATE DATABASE y USE: El primero crea un nuevo contenedor para tus tablas (la base de datos), y USE te permite seleccionarla para trabajar en ella.
  • CREATE TABLE: Define la estructura de una tabla, especificando sus columnas y los tipos de datos que almacenarán (ej. INT para números, VARCHAR para texto, DATE para fechas).
  • INSERT INTO: Añade nuevas filas (registros) a una tabla.
  • SELECT: Es el comando más usado. Sirve para consultar y recuperar datos de las tablas. Puedes seleccionar columnas específicas (SELECT nombre, apellido) o todas (SELECT *).
  • FROM: Siempre acompaña a SELECT para indicar de qué tabla se obtendrán los datos.
  • WHERE: Filtra los registros y te permite obtener solo los que cumplen una condición específica (ej. WHERE edad > 18).
  • UPDATE: Modifica registros existentes en una tabla.
  • DELETE FROM: Elimina registros de una tabla.
  • ORDER BY: Ordena los resultados de una consulta SELECT, ya sea de forma ascendente (ASC) o descendente (DESC).
  • JOIN: Permite combinar filas de dos o más tablas basándose en una columna relacionada entre ellas.

Con estos comandos, ya tienes lo necesario para empezar a construir y manipular tus primeras bases de datos.

Preparando Nuestro Entorno de Trabajo

Para los siguientes ejercicios, usaremos una base de datos de una pequeña biblioteca. Primero, vamos a crearla y a poblarla con algunos datos.

Intento de resolución antes de la solución

Antes de ver el código, ¿Cómo crearías una base de datos llamada Biblioteca y, dentro de ella, dos tablas: Libros (con columnas id, titulo, autor, anio_publicacion) y Socios (con id, nombre, apellido, fecha_registro)? Luego, intenta añadir un par de libros y socios.

Solución: Creación y Población de la Base de Datos

-- 1. Creamos la base de datos para nuestra biblioteca
CREATE DATABASE IF NOT EXISTS Biblioteca;

-- 2. Seleccionamos la base de datos para empezar a trabajar en ella
USE Biblioteca;

-- 3. Creamos la tabla 'Libros' para almacenar la información de los libros
CREATE TABLE Libros (
    id INT AUTO_INCREMENT PRIMARY KEY, -- Identificador único para cada libro
    titulo VARCHAR(100) NOT NULL,      -- Título del libro, no puede estar vacío
    autor VARCHAR(50),                 -- Autor del libro
    anio_publicacion INT               -- Año de publicación del libro
);

-- 4. Creamos la tabla 'Socios' para los miembros de la biblioteca
CREATE TABLE Socios (
    id INT AUTO_INCREMENT PRIMARY KEY, -- Identificador único para cada socio
    nombre VARCHAR(50) NOT NULL,       -- Nombre del socio
    apellido VARCHAR(50) NOT NULL,     -- Apellido del socio
    fecha_registro DATE                -- Fecha en que se registró el socio
);

-- 5. Insertamos algunos datos de ejemplo en la tabla 'Libros'
INSERT INTO Libros (titulo, autor, anio_publicacion) VALUES
('Cien años de soledad', 'Gabriel García Márquez', 1967),
('Don Quijote de la Mancha', 'Miguel de Cervantes', 1605),
('La sombra del viento', 'Carlos Ruiz Zafón', 2001),
('El Señor de los Anillos', 'J.R.R. Tolkien', 1954);

-- 6. Insertamos datos de ejemplo en la tabla 'Socios'
INSERT INTO Socios (nombre, apellido, fecha_registro) VALUES
('Ana', 'Torres', '2022-01-15'),
('Luis', 'Gomez', '2022-03-22'),
('Marta', 'Silva', '2023-07-08');

10 Ejercicios Resueltos de SQL Básico

Ahora que tenemos todo listo, ¡manos a la obra! Intenta resolver cada problema antes de mirar la solución.

Ejercicio 1: Seleccionar todos los libros

Problema: Queremos ver un listado completo de todos los libros disponibles en nuestra biblioteca.

Intento de resolución: ¿Qué comando usarías para extraer todos los registros y todas las columnas de la tabla Libros?

Solución:

-- El asterisco (*) es un comodín que significa "todas las columnas".
-- Seleccionamos todas las columnas de la tabla Libros.
SELECT * FROM Libros;

Ejercicio 2: Encontrar libros publicados después del año 2000

Problema: Necesitamos una lista de los libros más «modernos», específicamente aquellos publicados después del año 2000.

Intento de resolución: ¿Cómo filtrarías la tabla Libros para que solo muestre aquellos cuya columna anio_publicacion sea mayor que 2000?

Solución:

-- Usamos la cláusula WHERE para filtrar los resultados.
-- La condición es que el año de publicación sea mayor a 2000.
SELECT titulo, autor, anio_publicacion
FROM Libros
WHERE anio_publicacion > 2000;

Ejercicio 3: Ordenar a los socios por fecha de registro

Problema: Queremos ver a nuestros socios ordenados desde el más antiguo al más reciente.

Intento de resolución: ¿Qué cláusula te permite ordenar los resultados? ¿Cómo le indicarías que ordene por la columna fecha_registro de forma ascendente?

Solución:

-- ORDER BY nos permite ordenar los resultados.
-- ASC indica un orden ascendente (de menor a mayor). Es el valor por defecto.
SELECT nombre, apellido, fecha_registro
FROM Socios
ORDER BY fecha_registro ASC;

Ejercicio 4: Actualizar el autor de un libro

Problema: Nos hemos dado cuenta de que el autor de ‘El Señor de los Anillos’ está mal escrito. Debemos corregirlo a ‘J.R.R. Tolkien’.

Intento de resolución: ¿Qué comando modifica un registro existente? ¿Cómo te asegurarías de modificar solo el libro correcto?

Solución:

-- UPDATE modifica los datos de una tabla.
-- WHERE es crucial para asegurarnos de que solo actualizamos el registro deseado.
UPDATE Libros
SET autor = 'J.R.R. Tolkien'
WHERE titulo = 'El Señor de los Anillos';

Ejercicio 5: Añadir un nuevo socio

Problema: Un nuevo miembro, ‘Carlos Ruiz’, se ha unido a la biblioteca hoy. Hay que añadirlo a la base de datos.

Intento de resolución: Recuerda el comando para añadir nuevas filas. ¿Cómo especificarías los valores para las columnas nombre, apellido y fecha_registro?

Solución:

-- INSERT INTO agrega una nueva fila a la tabla.
-- CURDATE() es una función de MySQL que devuelve la fecha actual.
INSERT INTO Socios (nombre, apellido, fecha_registro)
VALUES ('Carlos', 'Ruiz', CURDATE());

Ejercicio 6: Encontrar un socio por su nombre

Problema: Necesitamos encontrar la información del socio llamado ‘Luis’.

Intento de resolución: Similar al ejercicio 2, ¿cómo usarías WHERE para filtrar por un valor de texto en la columna nombre?

Solución:

-- Filtramos la tabla Socios para encontrar el registro donde el nombre es 'Luis'.
-- Es buena práctica usar comillas simples para los valores de texto.
SELECT * FROM Socios
WHERE nombre = 'Luis';

Ejercicio 7: Eliminar un libro

Problema: Vamos a retirar de la colección el libro ‘La sombra del viento’. Debemos eliminarlo de nuestra base de datos.

Intento de resolución: ¿Qué comando se usa para borrar registros? ¿Por qué es fundamental usar WHERE en esta operación?

Solución:

-- DELETE FROM elimina registros.
-- ¡ADVERTENCIA! Si no usas WHERE, borrarás TODOS los registros de la tabla.
DELETE FROM Libros
WHERE titulo = 'La sombra del viento';

Ejercicio 8: Contar el número total de socios

Problema: Queremos saber cuántos socios tenemos registrados en total.

Intento de resolución: ¿Existe alguna función que pueda contar el número de filas en lugar de devolver los datos?

Solución:

-- La función de agregación COUNT(*) cuenta el número total de filas en el resultado.
-- AS le da un alias (un nombre temporal) a la columna del resultado para mayor claridad.
SELECT COUNT(*) AS total_socios
FROM Socios;

Ejercicio 9: Mostrar solo el título y el autor de los libros

Problema: No necesitamos todos los datos de los libros, solo una lista con sus títulos y autores.

Intento de resolución: En lugar del comodín *, ¿cómo le pides a SELECT que te devuelva únicamente las columnas titulo y autor?

Solución:

-- En lugar de *, especificamos los nombres de las columnas que queremos ver,
-- separados por comas.
SELECT titulo, autor
FROM Libros;

Ejercicio 10: Encontrar libros de un autor específico y ordenarlos por año

Problema: Queremos ver todos los libros de ‘Miguel de Cervantes’ que tenemos, ordenados del más antiguo al más nuevo.

Intento de resolución: Este ejercicio combina filtrado y ordenamiento. ¿Cómo usarías WHERE y ORDER BY en la misma consulta?

Solución:

-- Primero, la cláusula WHERE filtra los libros por autor.
-- Luego, ORDER BY ordena los resultados de ese filtro por año de publicación.
SELECT titulo, anio_publicacion
FROM Libros
WHERE autor = 'Miguel de Cervantes'
ORDER BY anio_publicacion ASC;

Preguntas Frecuentes

¿SQL distingue entre mayúsculas y minúsculas?

En general, los comandos de SQL (SELECT, FROM, WHERE) no distinguen entre mayúsculas y minúsculas. Sin embargo, la distinción para los nombres de las bases de datos, tablas y los datos en sí (como ‘Ana’ vs ‘ana’) depende de la configuración del sistema operativo y de MySQL. Como buena práctica, es mejor ser consistente.

¿Qué es PRIMARY KEY y por qué es importante?

La PRIMARY KEY (clave primaria) es una columna (o un conjunto de columnas) que identifica de forma única cada fila en una tabla. Evita registros duplicados y es fundamental para relacionar tablas entre sí. En nuestros ejemplos, el id es la clave primaria.

¿Cuál es la diferencia entre DELETE y DROP?

DELETE es un comando DML (Lenguaje de Manipulación de Datos) que elimina filas de una tabla (DELETE FROM Libros...). La tabla sigue existiendo. DROP, por otro lado, es un comando DDL (Lenguaje de Definición de Datos) que elimina la estructura completa, como una tabla (DROP TABLE Libros) o una base de datos (DROP DATABASE Biblioteca). DROP es irreversible.

Tu Viaje SQL Apenas Comienza!

¡Felicidades! 🎉 Has completado tus primeros 10 ejercicios de SQL. Has aprendido a crear estructuras, insertar datos, consultarlos de múltiples formas, actualizarlos y eliminarlos. Estos son los cimientos sobre los que se construyen todas las habilidades avanzadas en bases de datos.

La clave ahora es la práctica constante. No te detengas aquí. Intenta crear tus propias tablas, añade más datos y formula tus propias preguntas. ¿Qué otros informes podrías generar para nuestra biblioteca? La curiosidad será tu mejor aliada.

¿Te ha gustado esta guía? ¡Hay mucho más por descubrir! Visita nuestro blog para encontrar más tutoriales, ejercicios avanzados y consejos que te convertirán en un experto en SQL y tecnología. ¡Te esperamos!

No pares de aprender¡Hay mucho más esperándote! Sigue aprendiendo dentro y fuera de nuestra web.
Ejercicios de Java, Javascript, Python, PHP, MySQL y mucho más
Comparte este artículo
Alejandro Nes
Alejandro Nes

¡Hola! Soy Alejandro Nes, desarrollador web con formación en informática y apasionado por la creación de contenido educativo. Aprendamos juntos a programar :)

Artículos: 17