INSERT, UPDATE y DELETE
Hasta ahora solo consultaste datos (SELECT). Ahora aprendés a modificarlos: agregar registros nuevos, actualizar valores existentes y eliminar filas. Estas operaciones forman el DML (Data Manipulation Language).
Concepto teórico
INSERT INTO — agregar registros
-- Forma explícita (recomendada): nombrar columnas
INSERT INTO clientes (nombre, ciudad, score, saldo)
VALUES ('García', 'Buenos Aires', 720, 150000);
-- Forma corta: sin nombrar columnas (debe respetar el orden)
INSERT INTO clientes VALUES (1, 'García', 'Buenos Aires', 720, 150000);
-- Insertar múltiples filas
INSERT INTO clientes (nombre, score) VALUES
('García', 720),
('López', 680),
('Pérez', 810);
-- INSERT desde un SELECT (copiar datos de otra tabla)
INSERT INTO clientes_premium (nombre, score)
SELECT nombre, score FROM clientes WHERE score >= 700;
UPDATE SET — modificar registros existentes
-- Actualizar un campo específico UPDATE clientes SET score = 750 WHERE nombre = 'García'; -- Actualizar múltiples campos UPDATE clientes SET score = 750, ciudad = 'Córdoba' WHERE id = 1; -- Actualizar con cálculo UPDATE cuentas SET saldo = saldo * 1.05 WHERE tipo = 'PF'; -- +5% a plazos fijos
UPDATE clientes SET score = 0; sin WHERE modifica TODOS los registros. Es el error más destructivo
en SQL. SIEMPRE verificá tu WHERE con un SELECT primero:
SELECT * FROM clientes WHERE condicion; → si las filas son las correctas, convertí el SELECT en
UPDATE.
DELETE FROM — eliminar registros
-- Eliminar registros que cumplen una condición DELETE FROM clientes WHERE activo = 0; -- Eliminar TODOS los registros (la tabla queda vacía) DELETE FROM clientes; -- ⚠️ sin WHERE = borrar TODO
DELETE FROM clientes; borra
TODOS los registros de la tabla. La misma regla: primero verificá con SELECT, después convertí en DELETE.Patrón seguro: SELECT → UPDATE/DELETE
-- Paso 1: verificar SELECT * FROM clientes WHERE score < 500; -- → Si las filas son las correctas... -- Paso 2: ejecutar DELETE FROM clientes WHERE score < 500;
Concepto de transacciones
Una transacción agrupa operaciones para que se ejecuten todas o ninguna (atomicidad). Si algo falla, podés hacer ROLLBACK (deshacer todo):
BEGIN TRANSACTION; UPDATE cuentas SET saldo = saldo - 50000 WHERE id = 101; UPDATE cuentas SET saldo = saldo + 50000 WHERE id = 102; COMMIT; -- todo bien → confirmar -- ROLLBACK; -- algo falló → deshacer todo
Ejemplos explicados paso a paso
Ejemplo 1: INSERT — agregar registros
Hacé clic en ▶ Ejecutar
Ejemplo 2: UPDATE — modificar registros
Hacé clic en ▶ Ejecutar
Ejemplo 3: DELETE — eliminar registros
Hacé clic en ▶ Ejecutar
Ejemplo 4: INSERT desde SELECT
Hacé clic en ▶ Ejecutar
Ejemplo 5: UPDATE con CASE — actualización condicional
Hacé clic en ▶ Ejecutar
Referencia rápida
| Operación | Sintaxis | Riesgo sin WHERE |
|---|---|---|
| INSERT | INSERT INTO t (cols) VALUES (vals) |
N/A (agrega) |
| INSERT multi | INSERT INTO t VALUES (...), (...) |
N/A |
| INSERT SELECT | INSERT INTO t SELECT ... FROM ... |
Puede duplicar |
| UPDATE | UPDATE t SET col = val WHERE cond |
Modifica TODO |
| DELETE | DELETE FROM t WHERE cond |
Borra TODO |
| Patrón seguro | Pasos |
|---|---|
| Antes de UPDATE | SELECT * FROM t WHERE condición → verificar → UPDATE t SET ... WHERE condición
|
| Antes de DELETE | SELECT * FROM t WHERE condición → verificar → DELETE FROM t WHERE condición
|
Ejercicios
Ejercicio 1: INSERT básico
Insertá 3 clientes y verificá con SELECT *. Debe incluir García.
Hacé clic en ▶ Ejecutar
Ejercicio 2: UPDATE simple
Actualizá el score de García a 750. Debe incluir 750.
Hacé clic en ▶ Ejecutar
Ejercicio 3: DELETE con WHERE
Eliminá clientes con score < 600 y verificá. Debe incluir García (que queda).
Hacé clic en ▶ Ejecutar
Ejercicio 4: UPDATE con cálculo
Aplicá 5% de interés (saldo * 1.05) a todas las cuentas tipo PF. Debe incluir 525000.
Hacé clic en ▶ Ejecutar
Ejercicio 5: INSERT desde SELECT
Copiá los clientes premium (score >= 700) a una nueva tabla. Debe incluir Pérez.
Hacé clic en ▶ Ejecutar
Ejercicio 6: UPDATE con CASE WHEN
Asigná categoría a cada cliente según score (4 niveles). Debe incluir Excelente.
Hacé clic en ▶ Ejecutar
Ejercicio 7: Patrón SELECT → DELETE
Primero mostrá los inactivos que vas a borrar, después borralos, después verificá. Debe incluir
quedan.
Hacé clic en ▶ Ejecutar
Ejercicio 8: INSERT múltiple + UPDATE masivo
Insertá 5 clientes, después actualizá el saldo de todos aplicando rendimiento 3%. Debe incluir
154500.
Hacé clic en ▶ Ejecutar
Ejercicio 9: DELETE + reconteo
Borrá clientes con saldo < $100K y mostrá cuántos quedaron. Debe incluir 3.
Hacé clic en ▶ Ejecutar
Ejercicio 10: Pipeline completo INSERT → UPDATE → DELETE → reporte
Creá tabla, insertá 6 clientes, actualizá categoría con CASE, eliminá los "Bajo" (<600), y generá reporte
final. Debe incluir REPORTE.
Hacé clic en ▶ Ejecutar
Resumen y conexión
INSERT INTO t (cols) VALUES (vals)agrega registros. Podés insertar desde un SELECT.UPDATE t SET col = val WHERE condmodifica registros. SIEMPRE con WHERE.DELETE FROM t WHERE condelimina registros. SIEMPRE con WHERE.- Patrón seguro: SELECT primero → verificar → UPDATE/DELETE después.
- UPDATE con CASE WHEN permite actualizaciones condicionales en una sola sentencia.
- Las transacciones (BEGIN/COMMIT/ROLLBACK) garantizan atomicidad.
En la siguiente lección (13 · CREATE TABLE y tipos) vas a aprender a crear tablas, definir tipos de datos, constraints (PRIMARY KEY, NOT NULL, UNIQUE) y diseñar esquemas.