← Все вопросы

Как обновить данные в таблице SQL (UPDATE)?

Задан 3 месяца назад312 просмотров2 ответа
9

Нужно поменять статус заказа с номером 42 на «отправлен», а ещё поднять цену всех товаров категории «книги» на 10%. Как обновить данные в SQL? Чего опасаться при UPDATE?

2 ответа

14
✓ Принятый ответ — помог автору

Изменение существующих строк делает команда UPDATE в связке SET (что менять) и WHERE (где менять):

UPDATE orders
SET status = 'shipped'
WHERE id = 42;

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

UPDATE products
SET price = price * 1.1,
    updated_at = NOW()
WHERE category = 'books';

Здесь цена каждой книги умножается на 1.1 (рост на 10%).

Самое важное и опасное: если забыть WHERE, UPDATE изменит ВСЕ строки таблицы:

UPDATE orders SET status = 'shipped';   -- ОШИБКА: все заказы станут shipped!

Это частая катастрофа новичков. Привычка профессионалов — сначала проверить условие через SELECT:

SELECT * FROM orders WHERE id = 42;  -- убедились, что строка та

и только потом менять SELECT на UPDATE с тем же WHERE.

Дополнительно:

  • Заворачивайте важные правки в транзакцию (BEGIN ... COMMIT), чтобы при ошибке сделать ROLLBACK.
  • В некоторых СУБД (Postgres) можно вернуть изменённые строки: UPDATE ... RETURNING *.
5

Хороший защитный приём в инструментах вроде MySQL Workbench — режим safe updates: он просто запрещает выполнить UPDATE или DELETE без WHERE по ключу. Если ваш UPDATE «не выполняется» с ошибкой про safe mode — это не баг, а защита от того, чтобы вы случайно не перезаписали всю таблицу. Всегда указывайте WHERE по первичному ключу, когда правите одну строку.

Ваш ответ

Войдите, чтобы ответить на вопрос.