SQL y Bases de DatosFundamentos SQLLección 5 de 20
INSERT, UPDATE y DELETE
DML (Data Manipulation Language) son los comandos que modifican datos. INSERT agrega nuevas filas: puedes insertar una sola fila o múltiples a la vez. UPDATE modifica filas existentes. DELETE elimina filas. Los tres requieren especial cuidado en producción.
La regla de oro del DML: siempre prueba tu WHERE con un SELECT antes de ejecutar UPDATE o DELETE. UPDATE sin WHERE modifica TODAS las filas de la tabla. DELETE sin WHERE borra TODA la tabla. En producción esto puede ser catastrófico e irreversible. Usa transacciones cuando hagas cambios masivos para poder hacer rollback si algo sale mal.
-- INSERT INTO: agregar una fila
INSERT INTO usuarios (nombre, email, edad)
VALUES ('Ana García', 'ana@email.com', 28);
-- INSERT múltiple: varias filas en un solo statement
INSERT INTO productos (nombre, precio, stock)
VALUES
('Laptop Pro', 1299.99, 50),
('Mouse Inalámbrico', 29.99, 200),
('Teclado Mecánico', 89.99, 150),
('Monitor 4K', 449.99, 30);
-- INSERT y recuperar el ID generado
INSERT INTO usuarios (nombre, email)
VALUES ('Luis Pérez', 'luis@email.com')
RETURNING id, creado_en;
-- UPDATE: modificar filas existentes
-- SIEMPRE incluye WHERE (salvo que quieras cambiar todo)
UPDATE productos
SET precio = 1199.99,
actualizado_en = NOW()
WHERE id = 1;
-- UPDATE múltiples columnas
UPDATE empleados
SET departamento = 'Ingeniería Senior',
salario = salario * 1.15,
actualizado_en = NOW()
WHERE departamento = 'Ingeniería'
AND anos_experiencia >= 5;
-- DELETE: eliminar filas
-- ⚠️ PELIGRO: DELETE sin WHERE borra TODA la tabla
DELETE FROM sesiones
WHERE expira_en < NOW();
-- TRUNCATE: vacía la tabla completamente (más rápido que DELETE)
-- Resetea también los contadores SERIAL
TRUNCATE TABLE logs; -- sin WHERE
TRUNCATE TABLE logs RESTART IDENTITY; -- resetea secuencias
-- Antes de DELETE/UPDATE peligroso: verifica con SELECT
SELECT COUNT(*) FROM sesiones WHERE expira_en < NOW();
-- Si el número parece correcto, ejecuta el DELETE
ConsejoRegla de oro: antes de ejecutar un UPDATE o DELETE, escribe primero el SELECT con el mismo WHERE y verifica que las filas afectadas sean las correctas. Luego cambia SELECT por UPDATE/DELETE.
Practica esta lección
Resuelve los ejercicios del curso de SQL y Bases de Datos en la app, gratis y con corrección automática.
Empezar a practicar