Ejercicio: Insertar, actualizar y borrar
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.
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
| id | nombre | categoria | precio | stock |
|---|---|---|---|---|
| 7 | Monitor 4K | Pantallas | 899.00 | 3 |
Estado final antes del ROLLBACK
| id | nombre | categoria | precio | stock |
|---|---|---|---|---|
| 1 | Teclado | Periféricos | 126.00 | 15 |
| 2 | Ratón | Periféricos | 47.77 | 40 |
| 3 | Monitor FHD | Pantallas | 650.00 | 8 |
| 4 | Auriculares | Audio | 89.90 | 30 |
| 5 | Webcam | Periféricos | 157.50 | 12 |
| 6 | Altavoz | Audio | 99.00 | 25 |
| 8 | Cable HDMI | Accesorios | 15.00 | 100 |
| 9 | Soporte monitor | Accesorios | 35.00 | 20 |
| 10 | Hub USB | Accesorios | 29.50 | 15 |
| 11 | Micrófono | Audio | 75.00 | 6 |
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ó.