При работе с базами данных регулярно приходится обновлять содержимое таблиц. За решение этой задачи в БД SQL отвечает оператор UPDATE. Инструмент позволяет менять уже существующие значения в столбцах по заданным условиям. Эта статья познакомит вас с синтаксисом, покажет примеры и объяснит, как эффективно использовать этот оператор.
Синтаксис
Для изменения данных в SQL предусмотрена команда следующего вида:
UPDATE TableName
SET ColumnName_1 = NewValue_1, ColumnName_2 = NewValue_2 …
WHERE Condition;
Описание переменных:
- TableName — название таблицы SQL, в которой необходимо поменять данные;
- ColumnName — название столбца для обновления;
- NewValue — обновленные данные для указанного столбца;
- Condition — строки, которые нужно модифицировать.
Переменная Condition — это дополнительный необязательный фильтр, определяющий выборку записей для обновления. Если параметр не задан, изменятся все значения столбцов.
Примеры использования оператора UPDATE
Можно менять значения выборочно, массово или полностью всю таблицу.
Точечная замена данных
Для модификации одного поля введем следующее:
UPDATE customers
SET email = 'new_email@example.com'
WHERE id = 2;
Этот код обновляет поле email в таблице customers на new_email@example.com для записи, у которой id равен 2. Чтобы оператор сработал корректно, аргумент WHERE должен однозначно указывать только на одну запись и быть уникальным.
Разовое изменение нескольких столбцов
Для одновременного обновления двух полей выполним такую команду:
UPDATE sales
SET price = 100, amount = 5
WHERE id = 10;
Этот код обновляет несколько полей — price и amount — в таблице sales для записи, у которой id равен 10. Обратите внимание: пары столбец-значение в SET нужно разделять запятыми.
Обновление таблицы SQL
Чтобы поменять сразу все строки, опустим блок WHERE:
UPDATE sales
SET price = 1000;
Этот код устанавливает цену на все товары из базы sales, равную 1000. Так как дополнительный параметр WHERE не указан, команда применяется ко всем значениям в столбцах указанной таблицы.
Доработаем этот пример: допустим, в магазине действует скидка 5% на все товары. Значит, нужно снизить все цены, то есть умножить существующие значения на 0,95. Как это сделать:
UPDATE sales
SET price = (price * 0,95);
Запрос обновляет поля price в таблице sales для всех записей в соответствии с указанной формулой.
Применение условий
Чтобы отфильтровать данные, подлежащие обновлению, воспользуемся параметром WHERE:
UPDATE orders
SET status = 'cancelled'
WHERE order_date < '2023-01-01';
Этот код обновляет статус всех заказов в столбцах таблицы orders, дата которых меньше 01.01.2023.
Дополнительные возможности оператора
При составлении запросов используются аргументы:
- DEFAULT — устанавливает параметр по умолчанию либо NULL, если параметр по умолчанию не задан;
- FROM — указывает, из какой таблицы нужно извлекать данные;
- ORDER BY — задает правила сортировки;
- LIMIT — ограничивает количество обновляемых записей.
Можно заменить данные записями из другой таблицы. Для этого используется синтаксис следующего вида:
UPDATE TableName_1
SET ColumnName_1 = (SELECT NewValue_1
FROM TableName_2
WHERE Condition)
[WHERE Condition];
Здесь TableName_1 указывает на БД SQL, в которой нужно заменить информацию, а TableName_2 — БД, из которой нужно взять новые значения в соответствии с блоками FROM и SELECT и перенести в первую БД по условиям, указанным в Condition.
Посмотрим, как обновлять значения в БД с помощью подзапросов, на примере:
UPDATE products
SET price = (SELECT avg_price
FROM product_stats
WHERE product_id = products.id)
WHERE category = 'electronics';
Этот код обновит цену товаров из категории electronics, установив ее равной средней цене из таблицы product_stats.
Основные правила работы с UPDATE
Оператор отличается довольно простым синтаксисом и мощной функциональностью. Чтобы эффективно пользоваться этим инструментом, стоит придерживаться нескольких рекомендаций:
- используйте WHERE для фильтрации строк, чтобы избежать случайной замены нужных данных;
- используйте COMMIT после выполнения запроса, чтобы зафиксировать изменения в БД;
- в случае ошибки используйте ROLLBACK для отмены изменений.
Также важно помнить, что UPDATE ничего не возвращает — только изменяет информацию в указанных столбцах и строках.
Резюме
UPDATE — мощный инструмент для модификации записей в базах данных SQL.
Знание правил работы с оператором, использование его дополнительных возможностей позволяет эффективно и безопасно изменять информацию в таблицах SQL и упрощает процесс администрирования БД.