MySQL | UPDATE
Start your free 7-days trial now!
The UPDATE
statement is used to modify existing records in a table.
You need the UPDATE
privilege on columns whose values you wish to update.
Syntax
UPDATE table_nameSET column1 = value1, column2 = value2 ...WHERE condition;
Examples
Consider the following table about whether some students hold a drivers license or not:
student_id | full_name | age | has_license |
---|---|---|---|
1 | Sky Towner | 17 | 0 |
2 | Ben Davis | 19 | 1 |
3 | Travis Apple | 18 | 0 |
4 | Arthur David | 16 | 0 |
5 | Benjamin Town | 17 | 1 |
The above sample table can be created using the code here.
Single column update
To update Sky Towner
's age to 18
as today is his birthday:
UPDATE drivers_licenseSET age = 18WHERE student_id = 1;
Query OK, 1 row affected (0.01 sec)Rows matched: 1 Changed: 1 Warnings: 0
The WHERE
clause here specifies that we only want to update the age for Sky Towner
.
We can see that Sky Towner
's age is now updated to 18
:
SELECT *FROM drivers_license;
+------------+---------------+------+-------------+| student_id | full_name | age | has_license |+------------+---------------+------+-------------+| 1 | Sky Towner | 18 | 0 || 2 | Ben Davis | 19 | 1 || 3 | Travis Apple | 18 | 0 || 4 | Arthur David | 16 | 0 || 5 | Benjamin Town | 17 | 1 |+------------+---------------+------+-------------+
Take care whenever you are performing an update on your table. If we forget to add the WHERE
clause in the above example, the age for all students in the table will be set to 18
.
To set the age of all students to 18
:
UPDATE drivers_licenseSET age = 18;SELECT *FROM drivers_license;
+------------+---------------+------+-------------+| student_id | full_name | age | has_license |+------------+---------------+------+-------------+| 1 | Sky Towner | 18 | 0 || 2 | Ben Davis | 18 | 1 || 3 | Travis Apple | 18 | 0 || 4 | Arthur David | 18 | 0 || 5 | Benjamin Town | 18 | 1 |+------------+---------------+------+-------------+
Multiple column update
To update the age
and has_license
column values for student_id=1
:
UPDATE drivers_licenseSET age = 18, has_license = TRUEWHERE student_id = 1;SELECT *FROM drivers_license;
+------------+---------------+------+-------------+| student_id | full_name | age | has_license |+------------+---------------+------+-------------+| 1 | Sky Towner | 18 | 1 || 2 | Ben Davis | 19 | 1 || 3 | Travis Apple | 18 | 0 || 4 | Arthur David | 16 | 0 || 5 | Benjamin Town | 17 | 1 |+------------+---------------+------+-------------+
As demonstrated above, multiple column updates are performed by specifying comma separated column=value
pairs.
Update with respect to current value
To update the age
of student 1 by incrementing the current value by 1
:
UPDATE drivers_licenseSET age = age + 1WHERE student_id = 1;SELECT *FROM drivers_license;
+------------+---------------+------+-------------+| student_id | full_name | age | has_license |+------------+---------------+------+-------------+| 1 | Sky Towner | 18 | 0 || 2 | Ben Davis | 19 | 1 || 3 | Travis Apple | 18 | 0 || 4 | Arthur David | 16 | 0 || 5 | Benjamin Town | 17 | 1 |+------------+---------------+------+-------------+
Note that Sky Towner
's age
has been incremented by 1
from 17
to 18
.