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. Для соседних задач пригодятся эти разборы:

Подписаться
Уведомить о
guest
0 комментариев
Старые
Новые Популярные

Настройки cookie

0
Оставьте комментарий! Напишите, что думаете по поводу статьи.x