QuieroProgramar por Rodri Gonzalez
SQL · Lección 12 de 15

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).

80–100 min Prerrequisitos: SQL 08
01

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
PELIGRO MÁXIMO: UPDATE sin WHERE. 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
PELIGRO MÁXIMO: DELETE sin WHERE. 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

Antes de UPDATE o DELETE, SIEMPRE hacé un SELECT con la misma condición WHERE. Si el SELECT muestra las filas correctas, reemplazá SELECT por UPDATE SET o DELETE FROM. Este hábito te salva de errores catastróficos.
-- 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
En el trabajo: como Data Analyst, usás INSERT/UPDATE/DELETE con menos frecuencia que SELECT (tal vez 5% de tu trabajo). Pero cuando lo hacés, los riesgos son altos: un UPDATE mal escrito puede corromper datos de producción. Por eso los equipos profesionales usan controles: transacciones, backups previos, y la regla "SELECT primero".
02

Ejemplos explicados paso a paso

Ejemplo 1: INSERT — agregar registros

ejemplo_01_insert.sqlSQL

        
Hacé clic en ▶ Ejecutar

Ejemplo 2: UPDATE — modificar registros

ejemplo_02_update.sqlSQL

        
Hacé clic en ▶ Ejecutar

Ejemplo 3: DELETE — eliminar registros

ejemplo_03_delete.sqlSQL

        
Hacé clic en ▶ Ejecutar

Ejemplo 4: INSERT desde SELECT

ejemplo_04_insert_select.sqlSQL

        
Hacé clic en ▶ Ejecutar

Ejemplo 5: UPDATE con CASE — actualización condicional

ejemplo_05_update_case.sqlSQL

        
Hacé clic en ▶ Ejecutar
03

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
04

Ejercicios

Nivel 1 · Básico

Ejercicio 1: INSERT básico

Insertá 3 clientes y verificá con SELECT *. Debe incluir García.

ejercicio_01.sqlDebe incluir "García"

          
Hacé clic en ▶ Ejecutar
Nivel 1 · Básico

Ejercicio 2: UPDATE simple

Actualizá el score de García a 750. Debe incluir 750.

ejercicio_02.sqlDebe incluir "750"

          
Hacé clic en ▶ Ejecutar
Nivel 1 · Básico

Ejercicio 3: DELETE con WHERE

Eliminá clientes con score < 600 y verificá. Debe incluir García (que queda).

ejercicio_03.sqlDebe incluir "García"

          
Hacé clic en ▶ Ejecutar
Nivel 2 · Intermedio

Ejercicio 4: UPDATE con cálculo

Aplicá 5% de interés (saldo * 1.05) a todas las cuentas tipo PF. Debe incluir 525000.

ejercicio_04.sqlDebe incluir "525000"

          
Hacé clic en ▶ Ejecutar
Nivel 2 · Intermedio

Ejercicio 5: INSERT desde SELECT

Copiá los clientes premium (score >= 700) a una nueva tabla. Debe incluir Pérez.

ejercicio_05.sqlDebe incluir "Pérez"

          
Hacé clic en ▶ Ejecutar
Nivel 2 · Intermedio

Ejercicio 6: UPDATE con CASE WHEN

Asigná categoría a cada cliente según score (4 niveles). Debe incluir Excelente.

ejercicio_06.sqlDebe incluir "Excelente"

          
Hacé clic en ▶ Ejecutar
Nivel 3 · Avanzado

Ejercicio 7: Patrón SELECT → DELETE

Primero mostrá los inactivos que vas a borrar, después borralos, después verificá. Debe incluir quedan.

ejercicio_07.sqlDebe incluir "quedan"

          
Hacé clic en ▶ Ejecutar
Nivel 3 · Avanzado

Ejercicio 8: INSERT múltiple + UPDATE masivo

Insertá 5 clientes, después actualizá el saldo de todos aplicando rendimiento 3%. Debe incluir 154500.

ejercicio_08.sqlDebe incluir "154500"

          
Hacé clic en ▶ Ejecutar
Nivel 3 · Avanzado

Ejercicio 9: DELETE + reconteo

Borrá clientes con saldo < $100K y mostrá cuántos quedaron. Debe incluir 3.

ejercicio_09.sqlDebe incluir "3"

          
Hacé clic en ▶ Ejecutar
Nivel 4 · Desafío

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.

ejercicio_10.sqlDebe incluir "REPORTE"

          
Hacé clic en ▶ Ejecutar
05

Resumen y conexión

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.