"PostgreSQL update" обновляет существующие данные в таблице

"PostgreSQL update" - мощный инструмент для обновления данных в таблицах. Узнайте в этой статье, как правильно использовать его возможности, чтобы эффективно обновлять записи в базах данных.

Основы оператора UPDATE в PostgreSQL

UPDATE - это один из важнейших операторов языка SQL, позволяющий модифицировать существующие данные в таблицах. Давайте рассмотрим основные возможности оператора UPDATE в PostgreSQL.

Синтаксис оператора UPDATE

Синтаксис UPDATE выглядит следующим образом:

UPDATE table_name SET column1 = value1, column2 = value2,... WHERE condition; 

После ключевого слова "UPDATE" указывается имя таблицы, которую нужно обновить. Затем идет список пар вида "column = value", которые задают новые значения для столбцов. Условие в предложении "WHERE" определяет, какие именно записи будут обновлены.

Простой пример обновления одной записи

Например, чтобы обновить имя пользователя в таблице "users" с "id=5", можно написать:

UPDATE users SET name = 'John Doe' WHERE id = 5; 

Этот запрос найдет пользователя с "id=5" и установит ему новое имя "John Doe".

Обновление нескольких столбцов в записи

Одним оператором UPDATE можно изменить сразу несколько столбцов в записи, перечислив их через запятую:

UPDATE users SET name = 'John Doe', age = 35, city = 'New York' WHERE id = 5; 

Здесь мы обновили сразу 3 поля: "name", "age" и "city" (имя, возраст и город).

Использование условия "WHERE" для выбора обновляемых записей

Условие "WHERE" позволяет точно указать, какие записи должны быть обновлены. Например:

UPDATE users SET status = 'inactive' WHERE last_login < '2020-01-01'; 

Этот запрос обновит статус на "inactive" у всех пользователей, которые не заходили в систему с начала 2020 года.

Возврат обновленных записей с помощью RETURNING

С помощью конструкции "RETURNING" можно получить данные только что обновленных записей. Например:

UPDATE users SET status = 'inactive' WHERE last_login < '2020-01-01' RETURNING id, name; 

После выполнения запрос вернет "id" и "name" тех пользователей, чей статус был изменен на "inactive".

Обновление данных из других таблиц с "FROM"

"FROM" позволяет обновить одну таблицу данными из другой. Например:

UPDATE users u SET city = c.name FROM cities c WHERE u.city_id = c.id; 

Здесь мы обновили поле "city" в таблице "users" значениями из таблицы "cities", сопоставив их по "city_id".

Расширенные возможности "UPDATE"

Помимо базовых возможностей, в PostgreSQL реализован ряд расширенных вариантов использования оператора UPDATE.

Обновление таблиц с наследованием и партиционированием

При обновлении таблиц с наследованием или партиционированием PostgreSQL автоматически применяет изменения и к дочерним таблицам.

Параллельное обновление с использованием нескольких процессоров

Благодаря параллельному планированию, UPDATE может распределить нагрузку между ядрами процессора, значительно ускорив выполнение запроса.

Обновление представлений с помощью "INSTEAD OF" триггеров

Триггеры позволяют переопределить поведение UPDATE для представлений, реализуя более сложную логику обновления.

Условное обновление с "CASE" конструкцией

"CASE" в UPDATE дает возможность применить разные значения в зависимости от условия:

UPDATE users SET status = CASE WHEN last_login < '2020-01-01' THEN 'inactive' ELSE 'active' END; 

Обновление значений из других запросов через подзапросы

Подзапросы позволяют динамически вычислить новые значения для обновления:

UPDATE products SET price = price * 1.1 WHERE id IN (SELECT id FROM top_sellers); 

Здесь мы увеличили цену на 10% для топовых товаров, получив их "id" из подзапроса.

Примеры использования UPDATE

Рассмотрим несколько практических случаев использования оператора UPDATE в PostgreSQL.

Обновление данных о пользователях

UPDATE users SET last_login = CURRENT_TIMESTAMP WHERE id = 5; 

Обновляем дату последнего входа пользователя.

Изменение статусов заказов интернет-магазина

UPDATE orders SET status = 'delivered' WHERE delivery_date < CURRENT_DATE; 

Помечаем как "доставленные" заказы с прошедшей датой доставки.

Актуализация цен и наличия товаров

UPDATE products SET price = new_price, in_stock = new_stock FROM product_updates WHERE products.id = product_updates.id; 

Обновляем цены и количество товаров на складе данными из другой таблицы.

UPDATE является важнейшим инструментом для модификации данных в PostgreSQL. Используя продемонстрированные возможности оператора, вы сможете эффективно обновлять записи в своих таблицах.

Комментарии