MySQL
ACTUALIZAR
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:
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:
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
.