Skip to main content
Documents
Clauses StatementsKeywordsExpressionsFunctionsIndexesPerformance Optimization

MySQL UPDATE Statement

The `UPDATE` statement in MySQL is used to modify existing records in a table. It allows you to change one or more column values for rows that meet specific conditions.

Usage

The `UPDATE` statement is used when you need to modify data in a table. It is typically followed by a `SET` clause to specify new values and an optional `WHERE` clause to filter which rows should be updated. While the `WHERE` clause is optional, it is essential for updating specific rows to avoid unintended changes to all rows in the table.

sql
UPDATE table_name
SET column1 = value1, column2 = value2, ...
[WHERE condition];

In this syntax, `UPDATE table_name` identifies the table to be updated, `SET` assigns new values to columns, and the `WHERE` clause specifies which rows should be affected.

Examples

1. Basic Update

sql
UPDATE employees
SET salary = 50000
WHERE employee_id = 1234;

This example updates the `salary` column to 50,000 for the employee with an `employee_id` of 1234. Consider the potential performance impact when updating a column in a large dataset.

2. Updating Multiple Columns

sql
UPDATE products
SET price = 19.99, stock = stock - 1
WHERE product_id = 5678;

This query updates both the `price` and `stock` columns for the product with `product_id` 5678, reducing the stock by 1. Ensure that the `product_id` column is indexed to optimize performance.

3. Update with a Join

sql
UPDATE orders
JOIN customers ON orders.customer_id = customers.customer_id
SET orders.status = 'shipped'
WHERE customers.country = 'USA';

In this example, the `UPDATE` statement modifies the `status` column in the `orders` table to 'shipped' for all orders associated with customers from the USA using a join. Note that using joins in updates can be resource-intensive. Optimize by ensuring relevant indexes are in place.

Tips and Best Practices

  • Always use a `WHERE` clause. Without a `WHERE` clause, all rows in the table will be updated, which could lead to unintended changes.
  • Backup data before large updates. Always backup your data before executing large or critical updates to prevent data loss.
  • Test updates with a transaction. Use transactions to test updates in a controlled environment before applying them to production data. For example:
    sql
    START TRANSACTION;
    UPDATE employees SET salary = 55000 WHERE employee_id = 1234;
    -- Check the results
    ROLLBACK; -- or COMMIT; based on your assessment
    
  • Review performance impacts. Consider indexing columns used in the `WHERE` clause to improve the performance of `UPDATE` statements.
  • Be cautious with joins. When using joins in an update, double-check conditions to ensure the correct data is modified.
  • Use `LIMIT` with `ORDER BY`. For batch updates, use `LIMIT` in conjunction with `ORDER BY` to manage large data changes more safely.
  • Test in a non-production environment. Particularly when involving complex joins or conditions, test updates on a non-production environment first.
  • Minimize locking. For performance considerations, particularly with large tables, consider breaking large updates into smaller, more manageable batches or using subqueries to minimize locking.

SQL Upskilling for Beginners

Gain the SQL skills to interact with and query your data.
Start Learning for Free