Saltar al contenido
Bases de datos con SQL
Todos los cursos

Ejercicio: Insertar, actualizar y borrar

  • ⏱ 30 minutos
  • 📶 Nivel: principiante

Objetivo

Practicar INSERT, UPDATE y DELETE dentro de una transacción, usando WHERE con cuidado.

Cómo se trabaja

Practica en sqlite3 con tienda.db. Para poder repetir el ejercicio sin miedo, envuelve todo en una transacción: empieza con BEGIN; y, cuando termines, usa ROLLBACK; para dejar la base como estaba.

Si trabajas en papel, escribe cada instrucción y comprueba la solución. Partimos de la tabla original de 8 productos.

Pasos

Marca cada paso a medida que lo completes. Tu avance se guarda en este navegador.

💡 Pista 1: varias filas a la vez

Una sola instrucción INSERT con dos tuplas separadas por coma después de VALUES.

💡 Pista 2: el porcentaje

Subir un 5 % es multiplicar por 1.05: SET precio = ROUND(precio * 1.05, 2).

✅ Ver una solución posible

Intenta resolverlo antes de mirar. Tu versión puede ser distinta y también correcta.

Solución completa
BEGIN;

INSERT INTO productos (nombre, categoria, precio, stock)
VALUES ('Soporte monitor', 'Accesorios', 35.00, 20);

INSERT INTO productos (nombre, categoria, precio, stock)
VALUES ('Hub USB', 'Accesorios', 29.50, 15),
       ('Micrófono', 'Audio', 75.00, 6);

UPDATE productos
SET precio = ROUND(precio * 1.05, 2)
WHERE categoria = 'Periféricos';

UPDATE productos
SET stock = 30
WHERE id = 4;

SELECT * FROM productos WHERE stock < 5;
DELETE FROM productos WHERE stock < 5;

SELECT * FROM productos;

ROLLBACK;

Resultado del SELECT previo al DELETE

idnombrecategoriapreciostock
7Monitor 4KPantallas899.003

Estado final antes del ROLLBACK

idnombrecategoriapreciostock
1TecladoPeriféricos126.0015
2RatónPeriféricos47.7740
3Monitor FHDPantallas650.008
4AuricularesAudio89.9030
5WebcamPeriféricos157.5012
6AltavozAudio99.0025
8Cable HDMIAccesorios15.00100
9Soporte monitorAccesorios35.0020
10Hub USBAccesorios29.5015
11MicrófonoAudio75.006

Respuesta al paso 8: sin WHERE, todos los productos (no solo los periféricos) habrían subido un 5 %. Con una transacción abierta un ROLLBACK lo habría deshecho; sin ella, el cambio quedaría guardado.

💡 🏁 Reto extra (opcional)

Escribe una instrucción INSERT que falle a propósito (por ejemplo, repitiendo un id) y apunta el mensaje de error. Después envuélvela con BEGIN y ROLLBACK y comprueba que la tabla no cambió.