An UPDATE statement in SQL Server is used to modify existing records in a table. You can update specific columns of a table with new values based on certain conditions. Here is the general syntax of the UPDATE query:
UPDATE table_name SET column1 = value1, column2 = value2, ... WHERE condition;
Key Components
UPDATE table_name: Specifies the table you want to update.
SET: Indicates the columns to be updated and their new values.
WHERE: Specifies the condition that determines which rows should be updated. Without a WHERE clause, all rows in the table will be updated.
Example 1: Update a Single Column
If you want to update a single column in a table, here’s how you can do it:
UPDATE Employees SET Salary = 50000 WHERE EmployeeID = 1;
In this example:
The Employees table is updated.
The Salary column is set to 50000 for the row where EmployeeID equals 1.
Example 2: Update Multiple Columns
You can also update multiple columns in a single UPDATE statement:
UPDATE Employees SET Salary = 60000, Position = 'Manager' WHERE EmployeeID = 2;
In this case:
Both the Salary and Position columns are updated for the row where EmployeeID equals 2.
Example 3: Update Without a Condition
If you don’t include a WHERE clause, all rows in the table will be updated:
UPDATE Employees SET Salary = 45000;
This will set the Salary of all employees to 45000. Be cautious when running an update without a WHERE clause, as it affects every row.
Example 4: Using a Subquery
You can use a subquery in an UPDATE statement to update a column based on data from another table:
UPDATE Employees SET Salary = (SELECT AVG(Salary) FROM Salaries WHERE Employees.EmployeeID = Salaries.EmployeeID) WHERE Department = 'IT';
This query updates the Salary of all employees in the “IT” department, setting it to the average salary from another table called Salaries.
Example 5: Updating with JOIN
Sometimes, you may want to update a table based on data from another related table. You can use an UPDATE with JOIN:
UPDATE e SET e.Salary = s.NewSalary FROM Employees e JOIN SalaryUpdates s ON e.EmployeeID = s.EmployeeID WHERE e.Department = 'HR';
In this example:
The Employees table is updated with new salaries from the SalaryUpdates table for employees in the HR department.
Considerations
Transaction Control: Use BEGIN TRANSACTION and ROLLBACK/COMMIT to manage changes, especially if updating multiple records.
Backup: Always ensure you have a backup before running large or critical updates.
Triggers: If you have triggers on the table, they will be executed when an UPDATE occurs.
Example with Transaction:
BEGIN TRANSACTION; UPDATE Employees SET Salary = 65000 WHERE EmployeeID = 3; IF @@ERROR <> 0 ROLLBACK TRANSACTION; ELSE COMMIT TRANSACTION;
This script ensures that the transaction is either fully applied or reverted if an error occurs during the update.