sql >> Base de Datos >  >> RDS >> Mysql

Actualizar datos en una base de datos MySQL

Esta página explica cómo actualizar los datos existentes en una base de datos MySQL.

Así que ya hemos agregado datos a nuestra base de datos. Pero ahora nos damos cuenta de que nuestros datos contienen un error. A las manzanas se les ha asignado un UnitId de 1 — pero esto debería ser 2 .

Puedes ver esto aquí:

No hay problema. Simplemente actualizaremos ese registro.

La UPDATE Declaración

El SQL UPDATE declaración nos permite actualizar los datos en nuestra base de datos. Podemos usar esta declaración para cambiar la ID de la unidad de 1 a 2 . Para hacer esto, usamos el WHERE cláusula para especificar el registro exacto que necesitamos actualizar. Así:

UPDATE Fruit
SET UnitId = 2
WHERE FruitId = 1;

En general, es recomendable al hacer una UPDATE operación, para especificar el campo ID del registro que está intentando actualizar (o cualquiera que sea su clave principal). Esto ayuda a evitar la actualización accidental de registros incorrectos. En este ejemplo, sabíamos que las manzanas tenían un FruitId de 1 . Pero es posible que no siempre sepa la ID del registro que está intentando actualizar. En ese caso, podría hacer algo como esto:

UPDATE Fruit
SET UnitId = 2
WHERE FruitName = 'Apple' AND UnitId = 1;

Podemos seguir cualquiera de los dos con un SELECT declaración y aquí está el resultado:

Tenga en cuenta que DateUpdated la columna también se ha actualizado, aunque no especificamos una actualización para esa columna. Esto se debe a que, cuando creamos la tabla, configuramos esa columna para que se actualice con la fecha/hora actual cada vez que haya una actualización en el registro.

Aquí está el código que usamos cuando creamos esa columna:

DateUpdated TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP

Más específicamente, es el ON UPDATE CURRENT_TIMESTAMP eso resultó en la actualización de la columna justo ahora cuando ejecutamos UPDATE declaración.

Actualizaciones seguras

Podríamos haber construido fácilmente nuestro UPDATE comando como este (sin AND UnitId = 1 ):

UPDATE Fruit
SET UnitId = 2
WHERE FruitName = 'Apple';

Sin embargo, es posible que encuentre el siguiente error si intenta hacer eso:

Modo de actualizaciones seguras

Si encuentra el error anterior, es porque su conexión MySQL se está ejecutando en modo de Actualizaciones seguras. Esto ayuda a evitar que sobrescribamos grandes cantidades de datos accidentalmente. De hecho, si nos hubiéramos olvidado de incluir el WHERE cláusula ¡habríamos actualizado todos los registros de la tabla!

Sí, al ejecutar el siguiente código, todos los registros de nuestra tabla se actualizarán a Banana :

UPDATE Fruit
SET FruitName = 'Banana'

Por lo tanto, se puede obtener un beneficio real al ejecutar el modo Actualizaciones seguras.

Sin embargo, si realmente necesita ejecutar esa consulta (o si toda su fruta realmente se ha convertido en plátanos), puede realizar una de las siguientes acciones:

  • Modifique su consulta para incluir una KEY columna. Hicimos esto en los ejemplos en la parte superior de esta página.
  • Deshabilitar el modo de actualizaciones seguras.

Deshabilitar el modo de actualizaciones seguras

Si encuentra que necesita realizar una UPDATE operación sin usar una KEY campo, siempre puede deshabilitar el modo Actualizaciones seguras.

Para deshabilitar el modo de Actualizaciones seguras, ejecute el siguiente comando antes de ejecutar su UPDATE declaración:

set sql_safe_updates = 0;

Siempre es una buena idea restaurar la configuración a su estado anterior una vez que haya terminado, especialmente con configuraciones que podrían tener un impacto generalizado como este.

Para habilitar el modo de Actualizaciones seguras, ejecute lo siguiente:

set sql_safe_updates = 1;

De hecho, podría ejecutar todo al mismo tiempo, así:

set sql_safe_updates = 0;

UPDATE Fruit
SET UnitId = 2
WHERE FruitName = 'Apple';

select * from Fruit;

set sql_safe_updates = 1;

Actualizar varios campos

Puede actualizar varios campos utilizando una coma para separar cada asignación de campo. Así:

UPDATE Fruit
SET FruitName = 'Red Grapes', Inventory = '11'
WHERE FruitId = 5;

Resultado: