INSERT, UPDATE y DELETE: Manipular datos

Lectura
20 min~7 min lectura
CONCEPTO CLAVE: Las sentencias INSERT, UPDATE y DELETE son las operaciones fundamentales del Lenguaje de Manipulación de Datos (DML) en SQL. Estas comandos permiten agregar, modificar y eliminar registros en tus tablas, constituyendo las tres operaciones esenciales para gestionar la información en cualquier base de datos relacional.

¿Qué aprenderás en esta lección?

En esta lección dominarás las tres operaciones más importantes para manipular datos en SQL: INSERT para añadir nuevos registros, UPDATE para modificar información existente y DELETE para eliminar datos. Aprenderás la sintaxis correcta, las mejores prácticas de seguridad y cómo evitar errores comunes que podrían comprometer la integridad de tus datos.

INSERT: Añadiendo Nuevos Registros

La sentencia INSERT es tu herramienta para agregar filas a una tabla. Es la puerta de entrada de nuevos datos a tu base de datos.

Sintaxis Básica de INSERT

Existen varias formas de utilizar INSERT, dependiendo de la cantidad de datos que quieras insertar y la información que conozcas.

1. Insertar Valores Específicos

INSERT INTO nombre_tabla (columna1, columna2, columna3)
VALUES (valor1, valor2, valor3);

2. Insertar Múltiples Filas

INSERT INTO empleados (nombre, puesto, salario)
VALUES 
    ('María García', 'Desarrollador', 45000),
    ('Carlos López', 'Diseñador', 42000),
    ('Ana Martínez', 'Gerente', 55000);
📌 Nota importante: Cuando insertas múltiples filas en una sola sentencia INSERT, el rendimiento es significativamente mejor que ejecutar múltiples sentencias individuales. Esto se debe a que la base de datos procesa toda la operación como una sola transacción.

3. Insertar sin Especificar Columnas

INSERT INTO productos 
VALUES (1, 'Laptop HP', 899.99, 'Electrónica', 50);
⚠️ Advertencia: Esta forma solo funciona si proporcionas valores para TODAS las columnas en el orden exacto de la definición de la tabla. Si agregas una nueva columna a la tabla, esta sintaxis fallará. Es altamente recomendable especificar siempre las columnas explícitamente.

4. Insertar desde otra Tabla

INSERT INTO clientes_activos (nombre, email, telefono)
SELECT nombre, email, telefono
FROM clientes
WHERE activo = 1;
💡 Consejo profesional: Puedes combinar INSERT con SELECT para copiar datos entre tablas o para importar datos de forma masiva. Esta técnica es extremadamente útil para migraciones y copias de seguridad.

UPDATE: Modificando Datos Existentes

La sentencia UPDATE permite cambiar los valores de uno o más registros existentes en una tabla. Es crucial usar esta sentencia con precaución.

Sintaxis Básica de UPDATE

UPDATE nombre_tabla
SET columna1 = nuevo_valor1, columna2 = nuevo_valor2
WHERE condición;
📌 Regla de oro: La cláusula WHERE es fundamental en UPDATE. Sin ella, ¡modificarás TODOS los registros de la tabla!

Ejemplos Prácticos de UPDATE

Actualizar un Solo Registro

UPDATE empleados
SET salario = 50000
WHERE id_empleado = 15;

Actualizar Múltiples Columnas

UPDATE productos
SET precio = precio * 1.10,
    categoria = 'Tecnología'
WHERE categoria = 'Electrónica';

Actualizar con Condiciones Complejas

UPDATE pedidos
SET estado = 'Completado',
    fecha_entrega = '2024-02-15'
WHERE estado = 'Enviado'
  AND fecha_entrega IS NULL
  AND fecha_pedido < '2024-01-01';
💡 Consejo de optimización: Antes de ejecutar un UPDATE masivo, puedes verificar qué registros se verán afectados utilizando un SELECT con la misma condición WHERE. Esto te permite revisar los datos antes de modificarlos.
-- Primero verifica con SELECT
SELECT * FROM empleados
WHERE departamento = 'Ventas' AND salario < 30000;

-- Luego ejecuta UPDATE si los resultados son correctos
UPDATE empleados
SET salario = salario * 1.15
WHERE departamento = 'Ventas' AND salario < 30000;

DELETE: Eliminando Registros

La sentencia DELETE remove filas completas de una tabla. Es la operación más irreversible, así que requiere máxima precaución.

Sintaxis Básica de DELETE

DELETE FROM nombre_tabla
WHERE condición;

Ejemplos de DELETE

Eliminar Registros Específicos

DELETE FROM carrito_compras
WHERE id_usuario = 42 AND estado = 'abandonado';

Eliminar con Subconsulta

DELETE FROM productos
WHERE id_categoria IN (
    SELECT id_categoria 
    FROM categorias
    WHERE nombre = 'Obsoletos'
);
⚠️ Peligro: Un DELETE sin cláusula WHERE eliminará TODOS los registros de la tabla. Aunque la tabla permanecerá vacía, su estructura y otros atributos (índices, constraints, etc.) se mantendrán intactos.
-- ¡ESTO ELIMINARÁ TODOS LOS REGISTROS!
DELETE FROM registros_temporales;  -- ¡CUIDADO!

La Importancia de las Transacciones

Las transacciones te permiten agrupar operaciones y asegurarte de que se completen correctamente o se deshagan por completo si algo sale mal.

-- Iniciar transacción
BEGIN TRANSACTION;

-- Realizar operaciones
UPDATE cuentas
SET saldo = saldo - 500
WHERE id_cuenta = 1;

UPDATE cuentas
SET saldo = saldo + 500
WHERE id_cuenta = 2;

-- Confirmar cambios
COMMIT;

-- O deshacer todo si hay error
-- ROLLBACK;
CONCEPTO CLAVE: COMMIT guarda permanentemente los cambios realizados durante la transacción, mientras que ROLLBACK deshace todos los cambios realizados desde el último COMMIT o desde el inicio de la transacción.

Mejores Prácticas de Seguridad

PrácticaDescripción¿Por qué importa?
Usar siempre WHEREIncluir siempre una condición en UPDATE y DELETEEvita modificaciones accidentales masivas
Verificar primeroEjecutar SELECT con la misma condición WHEREPermite revisar datos antes de modificarlos
Usar transaccionesAgrupar operaciones relacionadasGarantiza consistencia de datos
Respaldar datosCrear copias de seguridad antes de operaciones masivasPermite recuperación ante errores
Privilegios mínimosOtorgar solo permisos necesarios a los usuariosReduce riesgos de operaciones no autorizadas
📌 Tip de productividad:many sistemas de bases de datos ofrecen una opción de "modo de confirmación manual" donde los cambios no se hacen permanentes hasta ejecutar COMMIT. Esto te da una capa adicional de seguridad durante el desarrollo y pruebas.

Errores Comunes y Cómo Evitarlos

Ver más sobre errores comunes

Error 1: Olvidar la condición WHERE

El error más frecuente y peligroso. Siempre verifica dos veces tu sintaxis antes de ejecutar.

Error 2: Violación de restricciones de clave única

-- Error: Violación de clave única
INSERT INTO usuarios (email)
VALUES ('[email protected]');
-- Error si '[email protected]' ya existe

Error 3: Tipos de datos incompatibles

-- Error: Tipo de dato incorrecto
UPDATE productos
SET precio = 'muy caro'  -- Error: cadena no es numérico
WHERE id = 5;

Error 4: Referenciar tablas en UPDATE incorrectamente

-- Cuidado con las subconsultas que referencian la misma tabla
UPDATE empleados e
SET salario = (
    SELECT AVG(salario) * 1.1
    FROM empleados 
    WHERE departamento = e.departamento
);

Ejemplo Integrado: Sistema de Gestión de Inventario

Veamos cómo aplicar estas tres operaciones en un escenario real:

  1. Recibir nuevo shipment de productos: Utilizamos INSERT para agregar los nuevos productos al inventario.
  2. Actualizar cantidades después de una venta: Utilizamos UPDATE para decrementar el stock disponible.
  3. Limpiar productos vencidos: Utilizamos DELETE para remove elementos que ya no son válidos.
-- Paso 1: Insertar nuevos productos
INSERT INTO inventario (sku, nombre, cantidad, precio, fecha_recepcion)
VALUES 
    ('ELEC-001', 'Auriculares Bluetooth', 50, 29.99, '2024-02-01'),
    ('ELEC-002', 'Cargador USB-C', 100, 12.99, '2024-02-01');

-- Paso 2: Actualizar después de una venta
UPDATE inventario
SET cantidad = cantidad - 2
WHERE sku = 'ELEC-001';

-- Paso 3: Eliminar productos vencidos
DELETE FROM inventario
WHERE fecha_vencimiento < '2024-01-01';

-- Verificar el resultado
SELECT * FROM inventario;
💡 Recuerda: En un entorno de producción real, estas operaciones deberían estar envueltas en transacciones con manejo adecuado de errores para garantizar la integridad de los datos.
La manipulación de datos es una habilidad fundamental que todo desarrollador de bases de datos debe dominar. Un mal uso de estas operaciones puede resultar en pérdida de datos, inconsistencias o problemas de rendimiento. La práctica y la precaución son tus mejores aliadas.

Resumen de Sintaxis

OperaciónSintaxisUso Principal
INSERTINSERT INTO tabla (cols) VALUES (vals)Agregar nuevos registros
UPDATEUPDATE tabla SET col=val WHERE condiciónModificar registros existentes
DELETEDELETE FROM tabla WHERE condiciónEliminar registros específicos
COMMITCOMMITConfirmar transacción
ROLLBACKROLLBACKDeshacer cambios
🧠 Quiz: Verifica tu aprendizaje

¿Cuál de las siguientes afirmaciones es CORRECTA sobre la sentencia UPDATE en SQL?

  • A) La cláusula WHERE es opcional y siempre se debe omitir para actualizar todos los registros rápidamente
  • B) Se pueden actualizar múltiples columnas en una sola sentencia UPDATE usando SET
  • C) UPDATE solo puede modificar una columna a la vez
  • D) La sentencia UPDATE no puede usar subconsultas
✅ Respuesta correcta: B) Se pueden actualizar múltiples columnas en una sola sentencia UPDATE usando SET. La cláusula WHERE es fundamental y no debe omitirse. UPDATE puede modificar múltiples columnas simultáneamente.
🧠 Quiz: Segunda pregunta

¿Qué sucede si ejecutas DELETE FROM tabla_sin_parametros sin una cláusula WHERE?

  • A) Se eliminan solo los primeros 10 registros
  • B) La base de datos solicita confirmación antes de proceder
  • C) Se eliminan TODOS los registros de la tabla, pero la estructura permanece
  • D) Se genera un error de sintaxis
✅ Respuesta correcta: C) Se eliminan TODOS los registros de la tabla, pero la estructura permanece. Por esto es crucial verificar siempre la condición WHERE antes de ejecutar un DELETE.

Próximos Pasos

Has aprendido las operaciones fundamentales de manipulación de datos en SQL. Ahora estás listo para:

  • Profundizar en funciones de agregación como COUNT, SUM y AVG
  • Aprender sobre JOIN para combinar datos de múltiples tablas
  • Dominar subconsultas y consultas avanzadas
  • Entender conceptos de optimización y rendimiento
💡 Para practicar: Crea tu propia base de datos de pruebas y experimenta con estas operaciones. Recuerda siempre incluir transacciones para las operaciones destructivas y hacer copias de seguridad antes de probar en datos importantes.

¡Felicidades por completar esta lección! Ahora tienes las herramientas necesarias para manipular datos de manera efectiva y segura en cualquier base de datos relacional.