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);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);4. Insertar desde otra Tabla
INSERT INTO clientes_activos (nombre, email, telefono)
SELECT nombre, email, telefono
FROM clientes
WHERE activo = 1;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;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';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'
);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;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áctica | Descripción | ¿Por qué importa? |
|---|---|---|
| Usar siempre WHERE | Incluir siempre una condición en UPDATE y DELETE | Evita modificaciones accidentales masivas |
| Verificar primero | Ejecutar SELECT con la misma condición WHERE | Permite revisar datos antes de modificarlos |
| Usar transacciones | Agrupar operaciones relacionadas | Garantiza consistencia de datos |
| Respaldar datos | Crear copias de seguridad antes de operaciones masivas | Permite recuperación ante errores |
| Privilegios mínimos | Otorgar solo permisos necesarios a los usuarios | Reduce riesgos de operaciones no autorizadas |
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 comunesError 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 existeError 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:
- Recibir nuevo shipment de productos: Utilizamos INSERT para agregar los nuevos productos al inventario.
- Actualizar cantidades después de una venta: Utilizamos UPDATE para decrementar el stock disponible.
- 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;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ón | Sintaxis | Uso Principal |
|---|---|---|
| INSERT | INSERT INTO tabla (cols) VALUES (vals) | Agregar nuevos registros |
| UPDATE | UPDATE tabla SET col=val WHERE condición | Modificar registros existentes |
| DELETE | DELETE FROM tabla WHERE condición | Eliminar registros específicos |
| COMMIT | COMMIT | Confirmar transacción |
| ROLLBACK | ROLLBACK | Deshacer cambios |
¿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
¿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
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,SUMyAVG - Aprender sobre
JOINpara combinar datos de múltiples tablas - Dominar subconsultas y consultas avanzadas
- Entender conceptos de optimización y rendimiento
¡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.