automated terminal push
All checks were successful
learn org at code.softwareshinobi.com/databases.softwareshinobi.com/pipeline/head This commit looks good
All checks were successful
learn org at code.softwareshinobi.com/databases.softwareshinobi.com/pipeline/head This commit looks good
This commit is contained in:
106
landing/docs/Introduction-To-Databases/009-update.md
Normal file
106
landing/docs/Introduction-To-Databases/009-update.md
Normal file
@@ -0,0 +1,106 @@
|
||||
# UPDATE
|
||||
|
||||
As the name suggests, whenever you have to update some data in your database, you would use the `UPDATE` statement.
|
||||
|
||||
You can use the `UPDATE` statement to update multiple columns in a single table.
|
||||
|
||||
The syntax would look like this:
|
||||
|
||||
```sql
|
||||
UPDATE users SET username='bobbyiliev' WHERE id=1;
|
||||
```
|
||||
|
||||
Rundown of the statement:
|
||||
|
||||
* `UPDATE users`: First, we specify the `UPDATE` keyword followed by the table that we want to update.
|
||||
* `username='bobbyiliev'`: Then we specify the columns that we want to update and the new value that we want to set.
|
||||
* `WHERE id=1`: Finally, by using the `WHERE` clause, we specify which user should be updated. In our case, it is the user with ID 1.
|
||||
|
||||
The most important thing that you need to keep in mind is that if you don't specify a `WHERE` clause, all of the entries inside the `users` table would be updated, and all users would have the `username` set to `bobbyiliev`.
|
||||
|
||||
> Important: You need to be careful when you use the `UPDATE` statement without a `WHERE` clause as every single row will be updated.
|
||||
|
||||
If you have been following along all of the user entries in our `users` table, it currently have no data in the `about` column:
|
||||
|
||||
```
|
||||
+----+----------+-------+
|
||||
| id | username | about |
|
||||
+----+----------+-------+
|
||||
| 2 | bobby | NULL |
|
||||
| 3 | devdojo | NULL |
|
||||
| 4 | tony | NULL |
|
||||
| 5 | bobby | NULL |
|
||||
| 6 | devdojo | NULL |
|
||||
| 7 | tony | NULL |
|
||||
+----+----------+-------+
|
||||
```
|
||||
|
||||
Let's go ahead and update this for all users and set the column value to `404 bio not found`, For example:
|
||||
|
||||
```sql
|
||||
UPDATE users SET about='404 bio not found';
|
||||
```
|
||||
|
||||
The output would let you know how many rows have been affected by the query:
|
||||
|
||||
```
|
||||
Query OK, 6 rows affected (0.02 sec)
|
||||
Rows matched: 6 Changed: 6 Warnings: 0
|
||||
```
|
||||
|
||||
Now, if you were to run a select for all `users`, you would get the following result:
|
||||
|
||||
```
|
||||
+----+----------+-------------------+
|
||||
| id | username | about |
|
||||
+----+----------+-------------------+
|
||||
| 2 | bobby | 404 bio not found |
|
||||
| 3 | devdojo | 404 bio not found |
|
||||
| 4 | tony | 404 bio not found |
|
||||
| 5 | bobby | 404 bio not found |
|
||||
| 6 | devdojo | 404 bio not found |
|
||||
| 7 | tony | 404 bio not found |
|
||||
+----+----------+-------------------+
|
||||
```
|
||||
|
||||
Let's now say that we wanted to update the `about` column for the user with an id of 2. In this case, we need to specify a `WHERE` clause followed by the ID of the user that we want to update as follows:
|
||||
|
||||
```sql
|
||||
UPDATE users SET about='Hello World :)' WHERE id=2;
|
||||
```
|
||||
|
||||
The output here should indicate that only 1 row was updated:
|
||||
|
||||
```
|
||||
Query OK, 1 row affected (0.01 sec)
|
||||
Rows matched: 1 Changed: 1 Warnings: 0
|
||||
```
|
||||
|
||||
Now, if you again run the `SELECT id, username, about FROM users` query, you would see that the user with `id` of 2 now has an updated `about` column data:
|
||||
|
||||
```
|
||||
+----+----------+-------------------+
|
||||
| id | username | about |
|
||||
+----+----------+-------------------+
|
||||
| 2 | bobby | Hello World :) |
|
||||
| 3 | devdojo | 404 bio not found |
|
||||
| 4 | tony | 404 bio not found |
|
||||
| 5 | bobby | 404 bio not found |
|
||||
| 6 | devdojo | 404 bio not found |
|
||||
| 7 | tony | 404 bio not found |
|
||||
+----+----------+-------------------+
|
||||
```
|
||||
|
||||
## Updating records using another table
|
||||
|
||||
As we've seen in the previous section, you can insert multiple rows in your table using another table. You can use the same principle for the update command.
|
||||
|
||||
To do that you simply have to list all needed table in the `update` section, then you have to explain which action you want to perform on the table, and then you need to link the table together.
|
||||
|
||||
For example, if you want to update the `about` field in the `users` table using the content of the `about` field in the `prospect_users` table, you would do something like this:
|
||||
|
||||
```sql
|
||||
update users, prospect_users
|
||||
set users.about = prospect_users.about
|
||||
where prospect_users.username = users.username;
|
||||
```
|
||||
Reference in New Issue
Block a user