Domina la manipulación de datos en MySQL: Ejercicios resueltos de Inserción y Actualización de Datos en MySQL
¿Alguna vez te has preguntado cómo las aplicaciones guardan tu información, actualizan tu perfil o registran tus compras? La magia sucede en la base de datos, y dos de los hechizos más importantes son INSERT
y UPDATE
. En este artículo, dejaremos la teoría pesada a un lado y nos lanzaremos directamente a la práctica. Aprenderás a añadir y modificar datos en MySQL con 10 ejercicios resueltos paso a paso. ¡Prepárate para tomar el control de tu información!
Nuestra Base de Datos de Ejemplo: Una Pequeña Librería
Para que puedas seguir los ejercicios y practicar en tu propio entorno, vamos a crear una pequeña base de datos para una librería. Consta de dos tablas principales: libros
y clientes
.
Puedes copiar y pegar el siguiente código en tu cliente de MySQL (como MySQL Workbench, DBeaver, o la línea de comandos) para crear y poblar las tablas con datos iniciales.
Código para crear la base de datos y las tablas:
-- Es una buena práctica crear una base de datos específica para nuestro proyecto.
CREATE DATABASE libreria_db;
USE libreria_db;
-- Creamos la tabla para almacenar la información de los libros.
CREATE TABLE libros (
id INT AUTO_INCREMENT PRIMARY KEY, -- Un identificador único para cada libro.
titulo VARCHAR(255) NOT NULL, -- El título no puede estar vacío.
autor VARCHAR(100) NOT NULL,
genero VARCHAR(50),
precio DECIMAL(10, 2) NOT NULL, -- Permite hasta 10 dígitos, con 2 decimales.
stock INT DEFAULT 0 -- Si no se especifica, el stock inicial será 0.
);
-- Creamos la tabla para los clientes de la librería.
CREATE TABLE clientes (
id INT AUTO_INCREMENT PRIMARY KEY,
nombre VARCHAR(100) NOT NULL,
email VARCHAR(100) NOT NULL UNIQUE, -- El email debe ser único para cada cliente.
fecha_registro DATE NOT NULL
);
Código para insertar datos iniciales:
-- Insertamos algunos libros para tener con qué trabajar.
INSERT INTO libros (titulo, autor, genero, precio, stock) VALUES
('El Hobbit', 'J.R.R. Tolkien', 'Fantasía', 15.75, 50),
('1984', 'George Orwell', 'Ciencia Ficción', 22.50, 75),
('Don Quijote de la Mancha', 'Miguel de Cervantes', 'Novela', 35.00, 30),
('La Sombra del Viento', 'Carlos Ruiz Zafón', 'Misterio', 20.00, 120);
-- Insertamos un cliente inicial.
INSERT INTO clientes (nombre, email, fecha_registro) VALUES
('Juan Pérez', 'juan.perez@email.com', '2023-01-15');
¡Listo! Con estas tablas y datos, ya tienes el escenario perfecto para empezar a practicar. Ahora, continuemos con la parte teórica.
Aprendizaje Teórico: Los Pilares de la Manipulación de Datos
Antes de empezar a escribir código, entendamos rápidamente nuestras dos herramientas principales.
INSERT INTO
: Este es tu comando para añadir nuevos registros (filas) a una tabla. Imagina que tienes una agenda de contactos;INSERT
sería la acción de añadir a una nueva persona. Su estructura básica es:SQLINSERT INTO nombre_tabla (columna1, columna2, ...) VALUES (valor1, valor2, ...);
UPDATE
: Este comando se usa para modificar registros que ya existen. Si uno de tus contactos cambia su número de teléfono, usaríasUPDATE
para actualizar su información. Es crucial usar la cláusulaWHERE
para especificar qué registro(s) quieres cambiar. Su estructura es:SQLUPDATE nombre_tabla SET columna1 = valor1, columna2 = valor2, ... WHERE condicion;
⚠️ ¡Atención! Si olvidas la cláusulaWHERE
en unUPDATE
, ¡modificarás todos los registros de la tabla!
¡Ahora sí, con nuestra base de datos lista, vamos a la acción!
10 Ejercicios Resueltos de Inserción y Actualización
Intento de Resolución Antes de la Solución
Para cada uno de los siguientes problemas, te animamos a que pauses un momento y pienses en cómo lo resolverías. Escribe tu propio código y luego compáralo con la solución que te proponemos. ¡La mejor forma de aprender es intentándolo!
Ejercicio 1: Añadir un Nuevo Libro
Problema: La librería acaba de recibir «Cien años de soledad» de Gabriel García Márquez, del género «Realismo mágico». Su precio es de $25.50 y han llegado 100 copias. Inserta este nuevo libro en la tabla libros
.
Solución:
-- Usamos INSERT INTO para especificar la tabla y las columnas que llenaremos.
INSERT INTO libros (titulo, autor, genero, precio, stock)
-- Con VALUES, proporcionamos los datos en el mismo orden que las columnas.
VALUES ('Cien años de soledad', 'Gabriel García Márquez', 'Realismo mágico', 25.50, 100);
Ejercicio 2: Registrar a Dos Nuevos Clientes a la Vez
Problema: Dos nuevos clientes se han registrado. Ana Torres (ana.t@email.com) y Carlos Ruiz (c.ruiz@email.com). Añádelos a la tabla clientes
en una sola consulta.
Solución:
-- Para insertar múltiples registros, simplemente separamos los conjuntos de valores con comas.
INSERT INTO clientes (nombre, email, fecha_registro)
VALUES
('Ana Torres', 'ana.t@email.com', CURDATE()), -- CURDATE() inserta la fecha actual.
('Carlos Ruiz', 'c.ruiz@email.com', CURDATE());
Ejercicio 3: Corregir el Precio de un Libro
Problema: Te has dado cuenta de que el precio de «Cien años de soledad» (supongamos que su id
es 1) es incorrecto. El precio real es $28.00. Actualiza el registro correspondiente.
Solución:
-- Usamos UPDATE para indicar la tabla que vamos a modificar.
UPDATE libros
-- Con SET, especificamos la columna a cambiar y su nuevo valor.
SET precio = 28.00
-- ¡La parte más importante! WHERE asegura que solo actualicemos el libro correcto.
WHERE id = 1;
Ejercicio 4: Actualizar el Stock de Todos los Libros de un Género
Problema: Ha llegado un nuevo cargamento con 50 copias de cada libro del género «Ciencia Ficción». Actualiza el stock de todos los libros de este género, añadiendo 50 unidades al stock actual de cada uno.
Solución:
-- Indicamos la tabla a actualizar.
UPDATE libros
-- Aquí, el nuevo valor de stock es el valor actual (stock) más 50.
SET stock = stock + 50
-- El WHERE nos permite aplicar esta lógica solo a los libros de 'Ciencia Ficción'.
WHERE genero = 'Ciencia Ficción';
Ejercicio 5: Registrar un Libro sin Especificar el Género
Problema: Añade el libro «El extranjero» de Albert Camus, con un precio de $19.99 y 80 copias en stock. Por ahora, no quieres registrar el género.
Solución:
-- Simplemente omitimos la columna 'genero' de la lista de columnas.
-- La base de datos le asignará su valor por defecto (si lo tiene) o NULL.
INSERT INTO libros (titulo, autor, precio, stock)
VALUES ('El extranjero', 'Albert Camus', 19.99, 80);
Ejercicio 6: Aplicar un Descuento a Libros Caros
Problema: La librería quiere hacer una oferta. Aplica un 10% de descuento a todos los libros cuyo precio sea superior a $30.00.
Solución:
-- Actualizaremos la tabla de libros.
UPDATE libros
-- Para aplicar un 10% de descuento, multiplicamos el precio actual por 0.90.
SET precio = precio * 0.90
-- La condición filtra los libros que son elegibles para el descuento.
WHERE precio > 30.00;
Ejercicio 7: Actualizar el Email de un Cliente
Problema: La clienta Ana Torres te informa que ha cambiado su correo electrónico al nuevo ana.torres.new@email.com
. Actualiza su registro.
Solución:
-- Apuntamos a la tabla de clientes.
UPDATE clientes
-- Establecemos el nuevo valor para la columna email.
SET email = 'ana.torres.new@email.com'
-- Usamos el nombre para identificar el registro único de Ana.
WHERE nombre = 'Ana Torres';
Ejercicio 8: Poner un Libro Fuera de Stock
Problema: Se ha vendido la última copia de «El extranjero» (supongamos que su id
es 2). Actualiza su stock a 0.
Solución:
-- Actualizamos la tabla libros.
UPDATE libros
-- Cambiamos el valor de la columna stock.
SET stock = 0
-- Identificamos el libro por su ID único para mayor precisión.
WHERE id = 2;
Ejercicio 9: Corregir el Nombre de un Autor en Múltiples Libros
Problema: Has notado que el nombre del autor «J.R.R. Tolkien» está mal escrito como «J.R. Tolkien» en varios de sus libros. Corrige el nombre del autor en todos los registros donde aparezca mal.
Solución:
-- Tabla a modificar: libros.
UPDATE libros
-- El nuevo valor para la columna 'autor'.
SET autor = 'J.R.R. Tolkien'
-- La condición busca todos los registros con el nombre incorrecto.
WHERE autor = 'J.R. Tolkien';
Ejercicio 10: Incrementar el Precio de Todos los Libros
Problema: Debido a la inflación, la librería necesita aumentar el precio de todos sus libros en $1.50. Realiza una actualización masiva.
Solución:
-- Indicamos la tabla a actualizar.
UPDATE libros
-- El nuevo precio será el precio actual más 1.50.
SET precio = precio + 1.50;
-- OJO: Esta consulta no tiene WHERE, por lo que se aplicará a TODOS los registros.
-- ¡Úsalo con cuidado y solo cuando estés seguro de que es lo que quieres hacer!
Preguntas Frecuentes (FAQs)
¿Qué pasa si intento insertar un registro con una clave primaria (id
) que ya existe?
Recibirás un error de «clave duplicada» (Duplicate entry). La base de datos no te permitirá crear el registro porque la clave primaria debe ser única para cada fila, garantizando la integridad de los datos.
¿Puedo actualizar varias columnas en una sola sentencia UPDATE
?
¡Sí, claro! Simplemente separa las asignaciones de columna y valor con comas en la cláusula SET
. Por ejemplo: UPDATE clientes SET nombre = 'Nuevo Nombre', email = 'nuevo@email.com' WHERE id = 3;
.
¿Cuál es el mayor riesgo de usar UPDATE
sin una cláusula WHERE
?
El mayor riesgo es que actualizarás todas las filas de la tabla. Si, por ejemplo, ejecutas UPDATE libros SET stock = 0;
sin un WHERE
, pondrás el stock de todos tus libros a cero. Es uno de los errores más comunes y peligrosos para los principiantes, así que siempre verifica tu WHERE
.
¡Ahora Tienes el Poder!
¡Felicidades! Has completado un recorrido práctico por dos de las operaciones más fundamentales en MySQL. Entender y dominar INSERT
y UPDATE
te da el poder de dar vida a las bases de datos, de registrar información nueva y de mantenerla siempre al día.
Recuerda que, como cualquier habilidad, la maestría llega con la práctica constante. No te detengas aquí. Sigue experimentando, crea tus propias tablas, inventa nuevos problemas y resuélvelos. Cada consulta que escribes es un paso más para convertirte en un experto en bases de datos.
¿Te ha gustado este tutorial? ¡Hay mucho más de donde vino! Visita nuestro blog para encontrar más guías, tutoriales y ejercicios que te ayudarán a llevar tus habilidades con las bases de datos al siguiente nivel. ¡Te esperamos!