INSERT, UPDATE y DELETE en SQL: modificar datos de forma segura


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

  1. insertar cinco productos;
  2. actualizar un precio;
  3. aumentar 10% una categoría;
  4. desactivar productos sin stock;
  5. 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:

☕ Apoyar con Mercado Pago

🌎 Apoyar con PayPal


Ruta SQL / MySQL

Ver todos los contenidos de SQL / MySQL

← CREATE TABLE y ALTER TABLE

Transacciones en SQL →


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”

Deja un comentario

Descubre más desde Club Programador

Suscríbete ahora para seguir leyendo y obtener acceso al archivo completo.

Seguir leyendo