CodeGym /Cursos /SQL SELF /Uso de WHERE al actualizar y eliminar datos...

Uso de WHERE al actualizar y eliminar datos

SQL SELF
Nivel 21 , Lección 4
Disponible

Imagina que eres admin de base de datos y tienes que cambiar o borrar registros. ¿Pero qué pasa si por accidente actualizas o borras todo? Usar el operador WHERE es tu "seguro" contra errores catastróficos. Te permite indicar exactamente qué filas deben verse afectadas por tus consultas.

Por ejemplo:

UPDATE students
SET status = 'Graduated';
Esta consulta va a actualizar absolutamente todas las filas de la tabla students. Y ahora imagina que en vez de felicitar por graduación, por error pusiste a todos status = 'Expelled'. ¡Peligroso, verdad? Para evitar esto, siempre usamos WHERE para indicar condiciones que determinan qué filas deben ser actualizadas o eliminadas.

Sintaxis de la condición WHERE

WHERE se usa para filtrar las filas a las que se aplica el operador. Puedes usarlo en el comando UPDATE o DELETE. La sintaxis es así:

Para UPDATE:

UPDATE tabla
SET columna1 = valor1, columna2 = valor2
WHERE condición;

Para DELETE:

DELETE FROM tabla
WHERE condición;

Sin WHERE los cambios afectarán a todas las filas de la tabla. Así que intenta siempre poner condiciones para no modificar datos que no querías tocar.

Uso de operadores de comparación

Para construir condiciones en WHERE usamos operadores de comparación. Vamos a ver los principales:

Operador Descripción Ejemplo
= Igual age = 18
<> No igual age <> 18
> Mayor que age > 18
< Menor que age < 18
>= Mayor o igual age >= 18
<= Menor o igual age <= 18

Ejemplo: actualizamos el status del estudiante

Si quieres marcar a todos los estudiantes mayores de 21 años como "graduados", se hace así:

UPDATE students
SET status = 'Graduated'
WHERE age > 21;

Ejemplo: eliminamos todos los estudiantes menores de 18 años

Si alguien metió por error estudiantes menores de edad, podemos borrarlos:

DELETE FROM students
WHERE age < 18;

Condiciones complejas con operadores lógicos

A menudo necesitas filtrar filas por varios criterios. Por ejemplo, para actualizar solo a los estudiantes que sean mayores de 18 años y estén en el curso de programación. Para esto usamos operadores lógicos: AND, OR y NOT.

Operadores lógicos:

Operador Descripción Ejemplo
AND Se cumple si todas las condiciones son verdaderas age > 18 AND course = 'Programming'
OR Se cumple si al menos una condición es verdadera age > 18 OR course = 'Programming'
NOT Negación (invierte el resultado de la condición) NOT (age < 18)

Ejemplo: actualizamos solo estudiantes programadores mayores de 18 años

UPDATE students
SET status = 'Advanced'
WHERE age > 18 AND course = 'Programming';

Ejemplo: eliminamos todos los estudiantes menores de 18 años o los que estén en el curso "Singing"

DELETE FROM students
WHERE age < 18 OR course = 'Singing';

Cómo evitar errores catastróficos

¡Revisa siempre la condición antes de ejecutar!

Si escribes una consulta sin WHERE, PostgreSQL la ejecutará felizmente para todas las filas de la tabla. Mira lo que pasa:

DELETE FROM students;
-- Ups! ¡Se eliminaron todos los registros de la tabla students!

Para evitar esto, ponle WHERE:

DELETE FROM students
WHERE student_id = 123;

Tip: si no estás seguro del efecto de la condición, empieza con un SELECT. Por ejemplo:

SELECT * FROM students
WHERE student_id = 123;

Cuando veas que la selección es correcta, ejecuta el UPDATE o DELETE.

Ejemplos prácticos

Ejemplo 1: Actualización de status de estudiantes

Supón que tenemos la tabla students:

student_id name age course status
1 Otto Lin 20 Programming Beginner
2 Maria Chi 22 Mathematics Graduated
3 Eva Gram 19 Programming Beginner

Queremos marcar a todos los estudiantes programadores mayores de 18 años como "Intermediate":

UPDATE students
SET status = 'Intermediate'
WHERE age > 18 AND course = 'Programming';

Resultado:

student_id name age course status
1 Otto Lin 20 Programming Intermediate
2 Maria Chi 22 Mathematics Graduated
3 Eva Gram 19 Programming Beginner

Ejemplo 2: Eliminación de estudiantes expulsados

Ahora imagina que tenemos estudiantes en cursos que hay que eliminar. Por ejemplo, estudiantes que estaban en el curso "History of Arts". Tabla:

student_id name age course status
1 Otto Lin 20 Programming Intermediate
4 Alex Ming 21 History of Arts Expelled

Eliminamos estudiantes del curso "History of Arts":

DELETE FROM students
WHERE course = 'History of Arts';
student_id name age course status
1 Otto Lin 20 Programming Intermediate

Ejemplo 3: Actualización sin condiciones (y por qué es mala idea)

Si escribes:

UPDATE students
SET status = 'Graduado';

TODOS los estudiantes serán graduados. Por eso, ¡siempre se recomienda usar WHERE!

Supón que al principio teníamos esta tabla:

student_id name age course status
1 Otto Lin 20 Programming Intermediate
2 Maria Chi 22 Mathematics Graduated
3 Eva Gram 19 Programming Beginner

Después de ejecutar UPDATE sin WHERE:

student_id name age course status
1 Otto Lin 20 Programming Graduado
2 Maria Chi 22 Mathematics Graduado
3 Eva Gram 19 Programming Graduado

😬 ¿Ves? Todos los status cambiaron. El error puede ser irreversible, sobre todo si no tienes backup. Así que WHERE es tu colega de confianza!

Detalles y trampas

Aunque el operador WHERE es súper útil, la gente que empieza suele cometer errores:

  • Falta de condición: si olvidas el WHERE, todas las filas serán afectadas.
  • Condición incorrecta: si escribes, por ejemplo, age = 19 en vez de age < 19, puedes tocar datos que no querías.
  • Condiciones complejas: si no pones bien las prioridades (AND y OR) puedes tener resultados raros. Usa paréntesis para que quede claro:
    DELETE FROM students
    WHERE (age > 18 AND course = 'Programming') OR course = 'Mathematics';
    

Intenta escribir consultas que sean lo más claras posible para ti y tus compis.

Ahora ya sabes cómo usar WHERE para actualizar y eliminar datos de forma segura y fiable. Esta herramienta es tu mejor amiga trabajando con bases de datos. Y recuerda: mejor comprobar la condición dos veces que tener que restaurar datos después!

1
Cuestionario/control
Inserción y actualización de datos, nivel 21, lección 4
No disponible
Inserción y actualización de datos
Inserción y actualización de datos
Comentarios
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION