Volver a la lista de artículos Artículos
Lectura de 7 minutos

¿Qué es la sentencia UPDATE en SQL?

La sentencia SQL UPDATE se utiliza para actualizar los datos existentes en la base de datos. Este artículo explicará su sintaxis y mostrará ejemplos claros de la sentencia UPDATE en acción.

La actualización efectiva de los datos existentes en una base de datos es necesaria para cualquiera que utilice SQL; los datos sólo son útiles si se mantienen actualizados y relevantes.

En este artículo, examinaremos la sintaxis de la sentencia UPDATE con gran detalle. A continuación, nos sumergiremos en ejemplos detallados paso a paso que nos harán comprender las reglas, los usos potenciales y las limitaciones asociadas a la sentencia SQL UPDATE.

¿Qué es la sentencia UPDATE?

En SQL, la sentencia UPDATE se utiliza para modificar o actualizar los registros existentes en una tabla. Puede utilizarla para actualizar todo de una vez, o puede especificar un subconjunto de registros para modificar utilizando la cláusula WHERE.

La sentencia UPDATE se considera un comando de manipulación de datos SQL. Los otros comandos son INSERT y DELETE, que puedes conocer en el curso Cómo insertar, actualizar o eliminar datos en SQL de LearnSQL.es.

Veamos la sintaxis de SQL UPDATE.

Sintaxis de SQL UPDATE

La sintaxis de la sentencia UPDATE es la siguiente:

UPDATE <table>
SET <column1> = <value1>,
        <column2> = <value2>,
        …
[WHERE <conditions>]

Desglosemos esta sintaxis.

El nombre de la tabla sigue directamente después de la propia sentencia UPDATE: UPDATE <table>.

Puede especificar las columnas que desea actualizar utilizando la palabra clave SET. Tenga en cuenta que al establecer los valores de sus columnas, debe utilizar el tipo de datos correcto. Veamos un ejemplo de consulta SQL que demuestra esto.

UPDATE employee
SET 	id = 1,
   	first_name = 'John'

Al establecer el valor de la columna id, no se necesitan comillas. Sin embargo, al establecer la columna first_name, debe pasar un valor de cadena, es decir, encerrando el texto entre comillas simples.

La última parte de la sintaxis es la inclusión opcional de la cláusula WHERE. Aunque es opcional, yo suelo incluir siempre WHERE en mis sentencias UPDATE. Si no se incluye la cláusula WHERE para especificar el registro exacto que se va a modificar, se actualizarán todos los valores de esa columna.

Veamos un ejemplo que demuestra esto. Tenemos dos consultas que son casi idénticas; la diferencia es que una utiliza WHERE y la otra no:

Query 1 - Without WHEREQuery 2 - With WHERE
UPDATE employee
	SET first_name = 'John'
UPDATE employee
	SET first_name = 'John'
	WHERE id = 1

La consulta 1 actualizará el nombre de todos los empleados a Juan - ¡probablemente no quiera que esto ocurra!

La consulta 2 actualiza el nombre de un empleado a Juan: aquel en el que el id de ese empleado es igual a 1. Eso es probablemente lo que espera conseguir.

Es una buena práctica utilizar SELECT para ver los registros antes de proceder a actualizarlos. Por ejemplo, puedes escribir esta consulta:

SELECT *
FROM employee
WHERE id = 1

Si el registro devuelto es efectivamente el que desea modificar, puede utilizar la misma cláusula WHERE para su sentencia UPDATE. De este modo, se asegura de no modificar accidentalmente ningún otro registro.

Y con esto concluye nuestra mirada a la sintaxis de SQL UPDATE. Ahora es el momento de ver algunos ejemplos prácticos que demostrarán algunos usos diferentes de la sentencia UPDATE. También tocaremos algunos problemas de permisos que podrías enfrentar.

Permisos SQL UPDATE

Antes de nuestro siguiente ejemplo, hablemos de los permisos. Es importante tener en cuenta que, dependiendo del dialecto de SQL que esté utilizando, es posible que tenga que cambiar los permisos para poder modificar los registros directamente con la sentencia UPDATE.

Por ejemplo, en MySQL te encontrarás con el mensaje: "Estás utilizando el modo de actualización seguro y has intentado actualizar una tabla sin un WHERE que utiliza una columna KEY. Para desactivar el modo seguro, activa la opción en Preferencias -> Editor SQL y vuelve a conectarte".

Para resolver esto, tienes dos opciones.

  1. Cambia tu configuración:
    1. Ir a Editar →
    2. Haga clic en la pestaña Editor de SQL y desmarque la casilla Actualizaciones seg uras
    3. Haga clic en Consulta → Reconectar con el servidor.
    4. Ejecute su consulta SQL.
  2. Ejecute la siguiente consulta:
    SET SQL_SAFE_UPDATES = 0;

Después de completar cualquiera de estas opciones, debería ser capaz de utilizar UPDATE para modificar los datos de la tabla.

Uso de UPDATE en columnas

Imaginemos que tenemos una tabla que contiene el nombre y la edad de los empleados de una empresa. Se supone que la tabla de la base de datos debe ser actualizada automáticamente por el sistema de RRHH conectado, pero al revisar la tabla, puede ver que algunas de las edades están desactualizadas. Usted decide que lo mejor es utilizar la sentencia SQL UPDATE para actualizar manualmente las edades de los empleados afectados.

En primer lugar, veamos la tabla employees tabla:

employee_idfirst_namelast_nameage
1JohnSmith23
2MaryConway54
3PaulJohnson33
4SandraCruz28
5JacobWard40
6StaceyTuite65
7ThomasRice43

Puede ver que cada fila contiene un identificador único para el empleado, junto con su first_name, last_name, y age.

Los empleados que necesitamos actualizar son Paul Johnson y Jacob Ward.

Empecemos por actualizar la edad de estos empleados:

UPDATE employees
SET age = 34
WHERE employee_id = 3;

Bien, esta consulta debería hacerlo. El valor 3 de employee_id corresponde a Paul Johnson. Sólo hay una ocurrencia de 3 en la columna employee_id, por lo que esta consulta no actualizará ningún otro registro. Ejecute la consulta y utilice la siguiente consulta SELECT para ver los resultados:

SELECT employee_id, first_name, last_name, age
FROM employees
WHERE employee_id = 3;
employee_idfirst_namelast_nameage
3PaulJohnson34

La edad ha sido actualizada con éxito.

Para nuestro siguiente empleado, vamos a actualizar su edad utilizando su first_name y last_name en la cláusula WHERE. Mientras no haya dos empleados con el mismo nombre y apellido, esto funcionará como queremos:

UPDATE employees
SET age = 41
WHERE first_name = 'Jacob' AND last_name = 'Ward'

Con eso debería bastar. Ejecute la consulta y utilice esta sentencia SELECT para ver el resultado:

SELECT employee_id, first_name, last_name, age
FROM employees
WHERE first_name = 'Jacob' AND last_name = 'Ward'
employee_idfirst_namelast_nameage
5JacobWard41

¡Es exactamente lo que queríamos! Para más ejemplos como este, revisa este artículo sobre cómo usar subconsultas con INSERT, UPDATE y DELETE.

A continuación, veamos un ejemplo más avanzado; actualizaremos una tabla utilizando datos de otra tabla.

Actualización de una tabla con datos de otra tabla

Imaginemos un escenario en el que alguien estuviera actualizando registros en la employees tabla y comete un error. Accidentalmente, puso en las 5 primeras filas el nombre "Juan". La tabla employees tabla tiene ahora este aspecto:

employee_idfirst_namelast_nameage
1JohnSmith23
2JohnConway54
3JohnJohnson33
4JohnCruz28
5JohnWard40
6StaceyTuite65
7ThomasRice43

¿Cómo lo arreglamos? Por suerte, tenemos una tabla de reserva que no se ha visto afectada por el error del desarrollador. Esta tabla se llama employees_backup y tiene el siguiente aspecto:

employee_idfirst_namelast_nameage
1JohnSmith23
2MaryConway54
3PaulJohnson34
4SandraCruz28
5JacobWard41
6StaceyTuite65
7ThomasRice43

Vamos a escribir una consulta que actualice los valores incorrectos de los empleados con los valores correctos de la tabla de respaldo. Cuando se actualizan varias filas, suele haber mucho trabajo manual. Esta consulta está diseñada para reducir ese trabajo repetitivo:

SET first_name = (SELECT first_name
                  FROM employees_backup
                  WHERE employees_backup.last_name = employees.last_name)
WHERE employee_id < 6;

Vamos a desglosar esto. Puede ver que la única columna que queremos modificar es first_name, pero sólo cuando el employee_id de ese registro es menor que 6. Esto se debe a que el error del desarrollador sólo afectó a los 5 primeros registros de la tabla.

A continuación, seleccionamos los valores de la columna first_name de la tabla employees_backup tabla, haciendo coincidir los empleados con su apellido. Así nos aseguramos de que cada empleado tenga el nombre correcto.

Este es un escenario útil para tener en cuenta; algo similar puede ocurrir cuando se trabaja con bases de datos. Tener un sólido conocimiento de la sentencia SQL UPDATE le permite corregir los errores con facilidad.

Logre un Control Completo de sus Datos con SQL UPDATE

Con esto concluye nuestro artículo sobre SQL UPDATE. Hemos cubierto la sintaxis y los permisos necesarios para utilizar la sentencia UPDATE. Hemos examinado algunos ejemplos prácticos - casos simples así como escenarios más avanzados como el uso de datos de otra tabla.

También hemos mencionado cómo INSERT es una de las formas de alterar los datos dentro de las tablas. Los otros comandos que modifican los datos son INSERT y DELETE. Aprende más sobre ellos en esta entrada del blog sobre INSERT, UPDATE y DELETE.