SQL - UPDATE Statement

The UPDATE TABLE statement is used to update records of the table in the database.

Syntax:

UPDATE table_name
SET column_name1 = new_value,
column_name2 = new_value,
...
[WHERE Condition];

Note that the WHERE clause is optional, but you should use it to update the specific record. An UPDATE statement without the WHERE clause will update values in all the rows of the table.

For the demo purpose, the following Employee table will be used in all examples here.

EmpId FirstName LastName Email PhoneNo Salary
1 'John' 'King' '[email protected]' '123.123.1834' 33000
2 'James' 'Bond'
3 'Neena' 'Kochhar' '[email protected]' '123.456.4568' 17000
4 'Lex' 'De Haan' '[email protected]' '123.456.4569' 15000

The following UPDATE statement will change the value of the Email column of the Employee table where the value of the EmpId is 1 in SQL Server, Oracle, MySQL, PostgreSQL, SQLite database.

SQL Script: Update Column
UPDATE Employee
SET email = '[email protected]'
WHERE EmpId = 1;

Now, the Select * from Employee query will display the following result.

EmpId FirstName LastName Email PhoneNo Salary
1 'John' 'King' '[email protected]' '123.123.1834' 33000
2 'James' 'Bond'
3 'Neena' 'Kochhar' '[email protected]' '123.456.4568' 17000
4 'Lex' 'De Haan' '[email protected]' '123.456.4569' 15000

Update Multiple Columns

Using the UPDATE statement, you can update more than one column of a table. The following query will change the Email and the PhoneNo in the Employee table whose EmpId is 2.

SQL Script: Update Multiple Columns
UPDATE Employee
SET Email = '[email protected]', PhoneNo = '111.111.0007'
WHERE EmpId = 2;

Now, the Select * from Employee query will display the following result.

EmpId FirstName LastName Email PhoneNo Salary
1 'John' 'King' '[email protected]' '123.123.1834' 33000
2 'James' 'Bond' [email protected] 111.111.0007
3 'Neena' 'Kochhar' '[email protected]' '123.456.4568' 17000
4 'Lex' 'De Haan' '[email protected]' '123.456.4569' 15000

You can also update a column with the calculated value. The following will increase the salaries of all the employees to 10% in the Employee table using a single UPDATE statement.

SQL Script: Update Data
UPDATE Employee 
SET Salary = Salary + (Salary * 10/100);

Now, the Select * from Employee query will display the following result.

EmpId FirstName LastName Email PhoneNo Salary
1 'John' 'King' '[email protected]' '123.123.1834' 36300
2 'James' 'Bond' [email protected] 111.111.0007
3 'Neena' 'Kochhar' '[email protected]' '123.456.4568' 18700
4 'Lex' 'De Haan' '[email protected]' '123.456.4569' 16500

You can use the subquery to update the data from another table. The following UPDATE statement will update the Salary in the Consultant table by selecting Salary from the Employee table for the matching EmpId values.

SQL Script: Update Values from Another Table
UPDATE Consultant
SET salary = (SELECT salary
FROM Employee WHERE Employee.EmpId = Consultant.EmpId);