В этом учебном материале вы узнаете, как использовать SQL оператор UPDATE с синтаксисом и примерами.
Описание
SQL оператор UPDATE используется для обновления существующих записей в таблицах.
Синтаксис
Синтаксис для оператора UPDATE при обновлении таблицы в SQL.
SET column1 = expression1,
column2 = expression2,
...
[WHERE conditions];
Или
Синтаксис SQL оператора UPDATE при обновлении таблицы данными из другой таблицы:
SET column1 = (SELECT expression1
FROM table2
WHERE conditions)
[WHERE conditions];
Или
Синтаксис SQL оператора UPDATE при обновлении нескольких таблиц (не разрешен в Oracle):
SET column1 = expression1,
column2 = expression2,
...
WHERE table1.column = table2.column
[AND conditions];
Параметры или аргументы
- column1, column2
- Столбцы, которые вы хотите обновить
- expression1, expression2
- Это новые значения, назначаемые column1, column2. Поэтому column1 будет присвоено значение expression1, а column2 будет присвоено значение expression2 и т.д.
- WHERE conditions
- Необязательный. Условия, которые должны быть выполнены, чтобы выполнить обновление. Если никаких условий не предусмотрено, то все записи в таблице будут обновлены
Пример - обновить один столбец
Давайте рассмотрим пример, показывающий, как использовать SQL оператор UPDATE для обновления одного столбца в таблице.
В этом примере UPDATE у нас есть таблица customers со следующими данными:
customer_id | first_name | last_name | favorite_website |
---|---|---|---|
4000 | Justin | Bieber | google.com |
5000 | Selena | Gomez | bing.com |
6000 | Mila | Kunis | yahoo.com |
7000 | Tom | Cruise | oracle.com |
8000 | Johnny | Depp | NULL |
9000 | Russell | Crowe | google.com |
Теперь давайте продемонстрируем, как работает оператор UPDATE, обновив один столбец в таблице customers. Введите следующую команду UPDATE.
1 2 3 |
UPDATE customers SET first_name = 'Joseph' WHERE customer_id = 8000; |
Будет обновлена 1 запись. Выберите данные из таблицы customers еще раз:
1 2 |
SELECT * FROM customers; |
Вот результаты, которые вы должны получить.
customer_id | first_name | last_name | favorite_website |
---|---|---|---|
4000 | Justin | Bieber | google.com |
5000 | Selena | Gomez | bing.com |
6000 | Mila | Kunis | yahoo.com |
7000 | Tom | Cruise | oracle.com |
8000 | Joseph | Depp | NULL |
9000 | Russell | Crowe | google.com |
supplier_id | supplier_name | city | state |
---|---|---|---|
100 | Yandex | Moscow | Russian |
200 | Lansing | Michigan | |
300 | Oracle | Redwood City | California |
400 | Bing | Redmond | Washington |
500 | Yahoo | Sunnyvale | Washington |
600 | DuckDuckGo | Paoli | Pennsylvania |
700 | Qwant | Paris | France |
800 | Menlo Park | California | |
900 | Electronic Arts | San Francisco | California |
Теперь давайте продемонстрируем, как использовать оператор UPDATE для обновления более одного значения столбца одновременно. Введите следующую команду UPDATE.
1 2 3 4 5 6 |
UPDATE suppliers SET supplier_id = 150, supplier_name = 'Apple', city = 'Cupertino' state = 'California' WHERE supplier_name = 'Google'; |
Будет обновлена 1 запись. Снова выберите данные из таблицы suppliers:
1 2 |
SELECT * FROM suppliers; |
Вот результаты, которые вы должны получить.
supplier_id | supplier_name | city | state |
---|---|---|---|
100 | Yandex | Moscow | Russian |
150 | Apple | Cupertino | California |
300 | Oracle | Redwood City | California |
400 | Bing | Redmond | Washington |
500 | Yahoo | Sunnyvale | Washington |
600 | DuckDuckGo | Paoli | Pennsylvania |
700 | Qwant | Paris | France |
800 | Menlo Park | California | |
900 | Electronic Arts | San Francisco | California |
В этом примере UPDATE будет обновлено значение supplier_id до 150, для supplier_name - 'Apple', для city - 'Cupertino', а для state - 'California', где supplier_name это "Google".
Пример - обновление таблицы данными из другой таблицы
Давайте рассмотрим пример UPDATE, который показывает, как обновить таблицу данными из другой таблицы.
В этом примере UPDATE у нас есть таблица products со следующими данными:
product_id | product_name | category_id |
---|---|---|
1 | Pear | 50 |
2 | Banana | 50 |
3 | Orange | 50 |
4 | Apple | 50 |
5 | Bread | 75 |
6 | Sliced Ham | 25 |
7 | Kleenex | NULL |
И таблица summary_data со следующими данными:
product_id | current_category |
---|---|
1 | 10 |
2 | 10 |
3 | 10 |
4 | 10 |
5 | 10 |
8 | 10 |
Теперь давайте обновим таблицу summary_data значениями из таблицы products. Введите следующую команду UPDATE:
1 2 3 4 5 6 7 |
UPDATE summary_data SET current_category = (SELECT category_id FROM products WHERE products.product_id = summary_data.product_id) WHERE EXISTS (SELECT category_id FROM products WHERE products.product_id = summary_data.product_id); |
Будет обновлено 5 записей. Снова выберите данные из таблицы summary_data:
1 2 |
SELECT * FROM summary_data; |
Вот результаты, которые вы должны получить.
product_id | current_category |
---|---|
1 | 50 |
2 | 50 |
3 | 50 |
4 | 50 |
5 | 75 |
8 | 10 |
В этом примере будет обновлено поле current_category в таблице summary_data с помощью category_id из таблицы products, где значения product_id совпадают. Первые 5 записей в таблице summary_data были обновлены.
Подсказка: обратите внимание, что наш оператор UPDATE включил условие EXISTS в предложение WHERE, чтобы убедиться, что в таблице products и summary_data совпадает product_id, прежде чем обновлять запись.
Если бы мы не включили условие EXISTS, запрос UPDATE обновил бы поле current_category до NULL в 6-й строке таблицы summary_data (поскольку таблица products не имеет записи, где product_id = 8).