SQL UPDATE Statements

The UPDATE statement in SQL is used to modify existing records in a table. It allows you to change the values of one or more columns for rows that meet specified criteria.

Basic Syntax

The fundamental syntax for the UPDATE statement is:

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

Examples

1. Updating a Single Column

Suppose you have a table named Employees with columns EmployeeID, FirstName, LastName, and Salary. To increase the salary of the employee with EmployeeID = 101 by 5000:

UPDATE Employees
SET Salary = Salary + 5000
WHERE EmployeeID = 101;

2. Updating Multiple Columns

To update both the Email and PhoneNumber for an employee:

UPDATE Customers
SET Email = 'new.email@example.com',
    PhoneNumber = '+1-555-123-4567'
WHERE CustomerID = 50;

3. Updating Based on Another Table (Subquery)

You can use subqueries in the SET clause or WHERE clause. For example, to update the OrderCount for customers who have placed an order:

UPDATE Customers
SET OrderCount = (
    SELECT COUNT(*)
    FROM Orders
    WHERE Orders.CustomerID = Customers.CustomerID
)
WHERE EXISTS (
    SELECT 1
    FROM Orders
    WHERE Orders.CustomerID = Customers.CustomerID
);

Caution: The Dangers of Omitting WHERE Clause

When using the UPDATE statement, always be extremely careful with the WHERE clause. Omitting it will result in updating all rows in the specified table. This can lead to significant data loss or corruption if not intended.

It is good practice to first run a SELECT statement with the same WHERE clause to verify which rows will be affected before executing the UPDATE.

// Before updating, run this to see which rows will be affected:
SELECT *
FROM Customers
WHERE CustomerID = 50;

Updating with NULL Values

You can set a column to NULL using the NULL keyword:

UPDATE Products
SET Description = NULL
WHERE ProductID = 25;

Updating with Current Date/Time

Many SQL dialects provide functions to get the current date or timestamp. For example, in SQL Server:

UPDATE Orders
SET ShippedDate = GETDATE()
WHERE OrderID = 12345;

In MySQL, you might use NOW() or CURDATE(). Always refer to your specific database system's documentation for the exact function names.

Best Practices

  • Always include a WHERE clause unless you intend to update all rows.
  • Test your UPDATE statements with SELECT first.
  • Use transactions to ensure data integrity. If an UPDATE fails midway, you can roll back the changes.
  • Be mindful of data types when providing new values.

Mastering the UPDATE statement is fundamental for managing and maintaining data within your SQL databases.