SQL оператор UPDATE

В этом учебном материале вы узнаете, как использовать SQL оператор UPDATE с синтаксисом и примерами.

Описание

SQL оператор UPDATE используется для обновления существующих записей в таблицах.

Синтаксис

Синтаксис для оператора UPDATE при обновлении таблицы в SQL.

UPDATE table
SET column1 = expression1,
column2 = expression2,
...
[WHERE conditions];

Или
Синтаксис SQL оператора UPDATE при обновлении таблицы данными из другой таблицы:

UPDATE table1
SET column1 = (SELECT expression1
FROM table2
WHERE conditions)
[WHERE conditions];

Или
Синтаксис SQL оператора UPDATE при обновлении нескольких таблиц (не разрешен в Oracle):

UPDATE table1, table2, ...
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 запись. Выберите данные из таблицы customers еще раз:

Вот результаты, которые вы должны получить.

В этом примере UPDATE для поля first_name установлено значение 'Joseph' в таблице customers, где customer_id равно 8000.

Пример - обновить несколько столбцов

Давайте рассмотрим пример UPDATE, который показывает, как обновить более одного столбца в таблице.
Подсказка:. Когда вы обновляете несколько столбцов в выражении UPDATE, вам нужно разделить запятыми пары столбец / значение в предложении SET.

В этом примере UPDATE у нас есть таблица suppliers со следующими данными:

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 Google Lansing Michigan
300 Oracle Redwood City California
400 Bing Redmond Washington
500 Yahoo Sunnyvale Washington
600 DuckDuckGo Paoli Pennsylvania
700 Qwant Paris France
800 Facebook Menlo Park California
900 Electronic Arts San Francisco California

Теперь давайте продемонстрируем, как использовать оператор UPDATE для обновления более одного значения столбца одновременно. Введите следующую команду UPDATE.

Будет обновлена 1 запись. Снова выберите данные из таблицы 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 Facebook 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:

Будет обновлено 5 записей. Снова выберите данные из таблицы 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).