SQL
UPDATE SQL: как изменить данные в таблице запросом
UPDATE в SQL изменяет данные в уже существующих строках таблицы. Команда нужна, когда нужно поменять цену товара, статус заказа, город клиента, признак активности или другое значение без удаления строки
Базовый синтаксис такой:
UPDATE products
SET price = 1200
WHERE id = 5;
Этот запрос найдет товар с id = 5 и изменит цену на 1200. Если убрать WHERE, SQL обновит цену у всех товаров в таблице
Как безопасно выполнить UPDATE
Перед изменением данных сначала выполните SELECT с тем же условием
SELECT *
FROM products
WHERE id = 5;
Если запрос показывает именно ту строку, которую нужно изменить, можно запускать UPDATE
UPDATE products
SET price = 1200
WHERE id = 5;
После изменения снова выполните SELECT, чтобы проверить результат
SELECT id, name, price
FROM products
WHERE id = 5;
Это простое правило особенно важно на рабочих базах. UPDATE не спрашивает, уверены ли вы, если команда синтаксически правильная
Как обновить несколько столбцов
Можно изменить несколько значений в одной строке
UPDATE products
SET price = 1200,
category = 'Распродажа'
WHERE id = 5;
Каждое присваивание пишется через запятую. Условие WHERE остается одно и определяет, какие строки будут изменены
Как обновить много строк по условию
Иногда нужно изменить не одну строку, а группу строк. Например, пометить старые заказы как архивные
UPDATE orders
SET status = 'archived'
WHERE created_at < '2025-01-01'
AND status = 'closed';
Здесь важно, что условие состоит из двух частей. Если оставить только дату, можно случайно архивировать заказы с другим статусом
UPDATE с расчетом
В SET можно использовать текущее значение столбца. Например, поднять цену на 10 процентов
UPDATE products
SET price = price * 1.10
WHERE category = 'Техника';
Такой запрос особенно важно проверять на тестовой выборке. Ошибка в условии может изменить слишком много строк, а повторный запуск еще раз увеличит цену
Мини-практика
Создайте учебную таблицу и измените цену одного товара
CREATE TABLE products (
id INTEGER,
name TEXT,
price INTEGER
);
INSERT INTO products (id, name, price) VALUES
(1, 'Монитор', 18000),
(2, 'Клавиатура', 2500),
(3, 'Мышь', 900);
SELECT *
FROM products
WHERE id = 3;
UPDATE products
SET price = 1100
WHERE id = 3;
SELECT *
FROM products
WHERE id = 3;
После обновления цена мыши должна стать 1100, а остальные товары не должны измениться
Частые ошибки
Первая ошибка — забыть WHERE. В этом случае обновятся все строки таблицы
Вторая ошибка — написать условие по неуникальному полю и ожидать одну строку. Например, WHERE category = 'Техника' может изменить сотни товаров, а не один
Третья ошибка — путать UPDATE и INSERT. UPDATE меняет существующие строки, а INSERT добавляет новые
Четвертая ошибка — обновлять рабочие данные без резервной копии или транзакции. Если база важная, сначала проверьте запрос на тестовой базе или выполните изменение в транзакции, если ваша СУБД и права это позволяют
Что почитать дальше по SQL
Если нужен общий маршрут по теме, откройте рубрику SQL. Для соседних задач пригодятся эти разборы:
- ALTER TABLE в SQL: как добавить, изменить и удалить столбец
- CREATE TABLE SQL: как создать таблицу запросом
- DELETE SQL: как удалить строки из таблицы и не потерять лишние данные
- INSERT, UPDATE, DELETE без потери данных