UPDATE ОПЕРАТОР

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

Описание

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

Синтаксис

Синтаксис оператора UPDATE при обновлении одной таблицы в Oracle/PLSQL:

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

ИЛИ

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

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

Параметры или аргументы

column1, column2, ... column_n
Столбцы, которые вы хотите обновить.

expression1, expression2, ... expression_n
Новые значения присвоенные для column1, column2, ... column_n. Так column1 будет присвоено значение expression1, column2 будет присвоено значение expression2, и так далее.

WHERE conditions
Необязательный. Условия, которые должны быть выполнены для обновления столбцов. Если не предусмотрено никаких условий, то все записи в таблице будут обновлены.

Пример обновления одного столбца

Рассмотрим очень простой пример Oracle UPDATE.

Этот Oracle UPDATE будет обновлять last_name в 'Anderson' в таблице customers, где customer_id = 5000.

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

Рассмотрим Oracle пример UPDATE, где вам потребуется обновить более одного столбца с одним оператором UPDATE.

Если вы хотите обновить несколько столбцов, вы можете сделать это путем разделения пары столбец / значение запятыми.

Этот пример Oracle UPDATE может обновить state в 'Nevada' и customer_rep в 32, где customer_id больше 100.

Пример обновления таблицы данными из другой таблицы

Рассмотрим Oracle пример UPDATE, который показывает, как обновить таблицу данными из другой таблицы.

В этом примере, UPDATE будет обновлять все записи только таблицы customers, где customer_id меньше 1000. Когда supplier_name таблицы suppliers соответствует customer_name из таблицы customers, данные contract_date из таблицы suppliers будут скопированы в поле c_details в таблице customers.

Пример использования условия EXISTS

Вы также можете выполнять более сложные обновления в Oracle.

Вы можете обновлять записи в одной таблице на основе значений другой таблицы. Поскольку вы не можете перечислить более одной таблицы в операторе Oracle UPDATE, то вы можете использовать Oracle условие EXISTS.

Например:

В этом Oracle примере UPDATE, всякий раз, когда supplier_id соответствует значение customer_id, то supplier_name будет перезаписано в customer_name из таблицы customers.

Практическое упражнение № 1:

На основании таблицы suppliers заполненной следующими данными, обновите city на 'Denver' для всех записей, чьё supplier_name является 'INTEL'.

Решение для практического упражнения № 1:

Следующий оператор UPDATE будет выполнять это обновление в Oracle.

Таблица suppliers будет выглядеть следующим образом:

SUPPLIER_ID SUPPLIER_NAME CITY
5001 Microsoft Chicago
5002 INTEL Denver
5003 Red Hat Detroit
5004 NVIDIA New York

Практическое упражнение № 2:

На основании таблицы suppliers и customers, заполненной следующими данными, обновите city в таблице suppliers значением поля city в таблице customers, когда supplier_name таблицы suppliers соответствует customer_name в таблице customers.

Решение для практического упражнения № 2:

Следующий оператор UPDATE будет выполнять это обновление в Oracle.

Таблица suppliers будет выглядеть следующим образом:

SUPPLIER_ID SUPPLIER_NAME CITY
5001 Microsoft San Francisco
5002 IBM Toronto
5003 Red Hat Newark
5004 NVIDIA LA