Buscar..


Sintaxis

  • UPDATE [LOW_PRIORITY] [IGNORE] tableName SET column1 = expresión1, columna2 = expresión2, ... [DÓNDE condiciones]; // Actualización simple de una sola tabla

  • UPDATE [LOW_PRIORITY] [IGNORE] tableName SET column1 = expresión1, columna2 = expresión2, ... [DÓNDE condiciones] [ORDEN POR expresión [ASC | DESC]] [LIMIT row_count]; // Actualizar con orden por y límite

  • ACTUALIZAR [LOW_PRIORITY] [IGNORE] table1, table2, ... SET column1 = expresión1, column2 = expresión2, ... [DONDE condiciones]; // Actualización de tabla múltiple

Actualización básica

Actualizando una fila

UPDATE customers SET email='[email protected]' WHERE id=1

Esta consulta actualiza el contenido del email en la tabla de customers a la cadena [email protected] donde el valor de id es igual a 1. El contenido antiguo y nuevo de la tabla de la base de datos se ilustra a continuación a la izquierda y a la derecha, respectivamente:

introduzca la descripción de la imagen aquí


Actualizando todas las filas

UPDATE customers SET lastname='smith'

Esta consulta actualiza el contenido del lastname para cada entrada en la tabla de customers . Los contenidos antiguos y nuevos de la tabla de la base de datos se ilustran a continuación a la izquierda y a la derecha, respectivamente:

introduzca la descripción de la imagen aquí

Aviso: Es necesario usar cláusulas condicionales (DONDE) en la consulta ACTUALIZAR. Si no utiliza ninguna cláusula condicional, se actualizarán todos los registros del atributo de esa tabla. En el ejemplo anterior, el nuevo valor (Smith) del apellido en la tabla de clientes se estableció en todas las filas.

Actualizar con un patrón de unión

Considere una tabla de producción llamada questions_mysql y una tabla iwtQuestions (tabla de trabajo importada) que representa el último lote de datos CSV importados de un LOAD DATA INFILE . La mesa de trabajo se trunca antes de la importación, los datos se importan y ese proceso no se muestra aquí.

Actualice nuestros datos de producción mediante una unión a nuestros datos de mesa de trabajo importados.

UPDATE questions_mysql q -- our real table for production 
join iwtQuestions i -- imported worktable 
ON i.qId = q.qId
SET q.closeVotes = i.closeVotes,
q.votes = i.votes, 
q.answers = i.answers, 
q.views = i.views;

Los alias q y i se utilizan para abreviar las referencias de la tabla. Esto facilita el desarrollo y la legibilidad.

qId , la clave principal, representa el ID de la pregunta de Stackoverflow. Se actualizan cuatro columnas para las filas coincidentes de la unión.

ACTUALIZAR CON ORDENAR Y LIMITAR

Si se especifica la cláusula ORDER BY en su instrucción SQL de actualización, las filas se actualizan en el orden especificado.

Si se especifica una cláusula LIMIT en su declaración SQL, eso coloca un límite en el número de filas que se pueden actualizar. No hay límite, si no se especifica la cláusula LIMIT .

ORDER BY y LIMIT no se pueden utilizar para la actualización de varias tablas.

La sintaxis de MySQL UPDATE con ORDER BY y LIMIT es,

UPDATE [ LOW_PRIORITY ] [ IGNORE ]
tableName
SET column1 = expression1,
    column2 = expression2,
    ...
[WHERE conditions]
[ORDER BY expression [ ASC | DESC ]]
[LIMIT row_count];

---> Example
UPDATE employees SET isConfirmed=1 ORDER BY joiningDate LIMIT 10

En el ejemplo anterior, se actualizarán 10 filas según el orden de los empleados que se joiningDate .

ACTUALIZACIÓN de tabla múltiple

En la UPDATE varias tablas, actualiza las filas en cada una de las tablas especificadas que satisfacen las condiciones. Cada fila coincidente se actualiza una vez, incluso si coincide con las condiciones varias veces.

En la tabla múltiple, UPDATE , ORDER BY y LIMIT no se pueden utilizar.

La sintaxis para tabla múltiple UPDATE es,

UPDATE [LOW_PRIORITY] [IGNORE] 
table1, table2, ...
    SET column1 = expression1,
        column2 = expression2,
        ...
    [WHERE conditions]

Por ejemplo, considere dos tablas, products y salesOrders . En el caso, disminuimos la cantidad de un producto en particular del pedido de venta que ya se realizó. Entonces también necesitamos aumentar esa cantidad en nuestra columna de stock de la tabla de products . Esto se puede hacer en una sola instrucción de actualización de SQL como a continuación.

UPDATE products, salesOrders
  SET salesOrders.Quantity = salesOrders.Quantity - 5, 
      products.availableStock = products.availableStock + 5
WHERE products.productId = salesOrders.productId
  AND salesOrders.orderId = 100 AND salesOrders.productId = 20;

En el ejemplo anterior, la cantidad '5' se reducirá de la tabla de salesOrders y la misma se incrementará en la tabla de products acuerdo con las condiciones WHERE .

Actualización masiva

Al actualizar varias filas con diferentes valores, es mucho más rápido utilizar una actualización masiva.

UPDATE people 
SET name = 
  (CASE id WHEN 1 THEN 'Karl'
           WHEN 2 THEN 'Tom'
           WHEN 3 THEN 'Mary'
   END)
WHERE id IN (1,2,3);

Mediante la actualización masiva, solo se puede enviar una consulta al servidor en lugar de una consulta para que se actualice cada fila. Los casos deben contener todos los parámetros posibles consultados en la cláusula WHERE .



Modified text is an extract of the original Stack Overflow Documentation
Licenciado bajo CC BY-SA 3.0
No afiliado a Stack Overflow