Curriculum
In this tutorial, you will learn how to use the SQL UPDATE
statement to modify data of the existing rows a table.
To change existing data in a table, you use the UPDATE
statement. The following shows the syntax of the UPDATE
statement:
UPDATE table_name SET column1 = value1, column2 = value2 WHERE condition;
In this syntax:
UPDATE
clause.SET
clause. The columns that are not listed in the SET
clause will retain their original values.
WHERE clause.The UPDATE
statement affects one or more rows in a table based on the condition in the WHERE
clause. For example, if the WHERE
clause contains a primary key expression, the UPDATE
statement changes one row only.
However, any row that causes the condition in the WHERE
to evaluate to true will be modified. Because the WHERE
clause is optional, therefore, if you omit it, the all the rows in the table will be affected.
We will use the employees and dependents table to demonstrate the UPDATE
statement.
Suppose the employee id 192 Sarah Bell changed her last name from Bell
to Lopez
and you need to update her record in the employees
table.
To update Sarah’s last name from Bell
to Lopez
, you use the following UPDATE
statement:
UPDATE employees SET last_name = 'Lopez' WHERE employee_id = 192;
The database system updated value in the last_name
column and the row with employee_id
192
.
You can verify it by using the following SELECT
statement.
SELECT employee_id, first_name, last_name FROM employees WHERE employee_id = 192;
Now, Nancy wants to change all her children’s last names from Bell
to Lopez
. In this case, you need to update all Nancy’s dependents in the dependents
table.
Before updating the data, let’s check the dependents of Nancy.
SELECT * FROM dependents WHERE employee_id = 192;
To update the last names of Nancy’s dependents, you use the following UPDATE
statement.
UPDATE dependents SET last_name = 'Lopez' WHERE employee_id = 192;
Sometimes when employees change their last names, you update the employees
table only without updating the dependents table.
To make sure that the last names of children are always matched with the last name of parents in the employees
table, you use the following statement:
UPDATE dependents SET last_name = ( SELECT last_name FROM employees WHERE employee_id = dependents.employee_id );
Because the WHERE
clause is omitted, the UPDATE
statement updated all rows in the dependents
table.
In the SET
clause, instead of using the literal values, we used a subquery to get the corresponding last name value from the employees
table.