Una base de datos no solo se consulta: también necesitamos crear, modificar y eliminar registros. Para eso usamos INSERT, UPDATE y DELETE.
Antes de modificar datos: pensar en el efecto
Las sentencias de escritura cambian el estado de la base. A diferencia de SELECT, un error puede modificar o eliminar información.
Por eso conviene pensar siempre:
- qué filas van a cambiar;
- qué restricciones pueden impedir la operación;
- si hace falta una transacción;
- si debemos probar primero la condición con SELECT.
INSERT: agregar datos
INSERT INTO agrega nuevas filas.
INSERT INTO alumnos (nombre, apellido, edad, email) VALUES ('Ana', 'Pérez', 22, 'ana@email.com');
El orden de los valores debe coincidir con el orden de las columnas indicadas.
Es recomendable escribir siempre la lista de columnas. Así la consulta queda más clara y no depende del orden físico de la tabla.
Insertar varios registros
INSERT INTO alumnos (nombre, apellido, edad) VALUES ('Juan', 'Gómez', 25), ('Lucía', 'Martínez', 21), ('Pedro', 'López', 30);
Omitir AUTO_INCREMENT
Si id es AUTO_INCREMENT, normalmente no lo enviamos. MySQL lo genera.
¿Qué pasa si falta una columna?
Depende de su definición:
- si tiene
DEFAULT, se usa ese valor; - si acepta NULL, puede quedar NULL;
- si es NOT NULL y no tiene valor por defecto, el INSERT puede fallar.
DEFAULT
Cuando una columna tiene un valor predeterminado podemos omitirla.
NULL
NULL significa ausencia de valor. No es lo mismo que cero ni que una cadena vacía.
INSERT INTO alumnos (nombre, apellido, edad) VALUES ('Pedro', 'López', NULL);
UPDATE: modificar registros
UPDATE alumnos SET edad = 23 WHERE id = 1;
SET indica qué columnas cambian y WHERE cuáles filas serán afectadas.
Si WHERE identifica una única fila, normalmente modificamos un registro. Si la condición coincide con 200 filas, se modifican las 200.
Actualizar varias columnas
UPDATE alumnos SET edad = 24, email = 'nuevo@email.com' WHERE id = 1;
Filas afectadas
Después de un UPDATE o DELETE, MySQL informa cuántas filas fueron afectadas. Ese dato es una verificación muy útil: si esperábamos cambiar una fila y aparecen 10.000, algo salió mal.
El peligro de UPDATE sin WHERE
UPDATE alumnos SET activo = FALSE;
Eso modifica todas las filas.
Probar primero con SELECT
Una práctica segura es verificar primero qué filas cumplen la condición.
SELECT * FROM alumnos WHERE edad < 18;
UPDATE con cálculos
UPDATE productos SET precio = precio * 1.10 WHERE categoria_id = 3;
El nuevo valor puede calcularse a partir del anterior.
UPDATE no cambia la estructura
UPDATE modifica los valores almacenados. No agrega ni elimina columnas; para cambiar la estructura usamos ALTER TABLE.
DELETE: eliminar filas
DELETE FROM alumnos WHERE id = 5;
DELETE sin WHERE
DELETE FROM alumnos;
Elimina todas las filas de la tabla.
La tabla sigue existiendo, pero queda vacía. Por eso una omisión accidental de WHERE puede ser muy grave.
DELETE y claves foráneas
Una relación puede impedir borrar un registro padre o aplicar reglas como CASCADE o SET NULL.
DELETE vs TRUNCATE
DELETE puede filtrar con WHERE. TRUNCATE vacía toda la tabla.
TRUNCATE suele ser más rápido para vaciar completamente una tabla y normalmente reinicia el contador AUTO_INCREMENT, pero no debe usarse cuando necesitamos borrar selectivamente.
TRUNCATE TABLE alumnos;
INSERT … SELECT
Permite copiar datos desde otra consulta.
INSERT INTO alumnos_backup (nombre, apellido, edad) SELECT nombre, apellido, edad FROM alumnos WHERE activo = TRUE;
UPDATE con JOIN
MySQL permite actualizar según datos relacionados.
UPDATE alumnos AS a INNER JOIN cursos AS c ON a.curso_id = c.id SET a.activo = FALSE WHERE c.nombre = 'Curso finalizado';
Buenas prácticas
- probar condiciones con SELECT;
- hacer backups antes de cambios masivos;
- usar transacciones cuando corresponda;
- revisar filas afectadas;
- evitar UPDATE o DELETE sin WHERE por accidente.
Ejercicios
- insertar cinco productos;
- actualizar un precio;
- aumentar 10% una categoría;
- desactivar productos sin stock;
- eliminar productos inactivos.
¿Qué sigue?
Transacciones para proteger operaciones compuestas.
¿Te sirvió esta guía? ☕
Si este contenido te ayudó y querés apoyar a Club Programador para seguir publicando ejercicios, proyectos y guías gratuitas, podés colaborar mediante:
Ruta SQL / MySQL
Ver todos los contenidos de SQL / MySQL
Descubre más desde Club Programador
Suscríbete y recibe las últimas entradas en tu correo electrónico.
2 opiniones en “INSERT, UPDATE y DELETE en SQL: modificar datos de forma segura”