Баннер мобильный (3) Пройти тест

Оператор UPDATE в SQL: как обновить данные в таблице

Как поддерживать актуальность информации в базах и не обнулить каталог

Разбор

26 февраля 2026

Поделиться

Скопировано
Оператор UPDATE в SQL: как обновить данные в таблице

Содержание

    Представьте: вы управляете каталогом товаров на маркетплейсе. Поставщик сообщает, что цены на всю линейку смартфонов повышаются на 10%. Или в системе обнаружена ошибка — у 500 пользователей указан неверный статус подписки. Как быстро и безопасно внести изменения в базу данных?

    На помощь приходит оператор UPDATE — один из ключевых инструментов SQL для изменения данных в таблице. Он позволяет исправлять ошибки, применять массовые изменения и поддерживать актуальность информации. Но без осторожности он же может случайно обнулить весь каталог. В этой статье вы узнаете, как использовать UPDATE правильно — от простого исправления записи до сложных обновлений через JOIN.

    Что такое UPDATE и зачем он нужен?

    UPDATE — это оператор из группы DML (Data Manipulation Language), который меняет существующие записи в таблице. В отличие от INSERT, он не добавляет новые строки, а именно обновляет значения в уже существующих.

    Без UPDATE вы не сможете:

    • исправить опечатку в имени клиента;
    • применить скидку ко всем товарам категории;
    • синхронизировать данные с внешними системами (например, с Ozon или Wildberries);
    • обновить статус заказа после его отправки.

    Как работает UPDATE: базовый синтаксис

    Простейший запрос выглядит так:

    UPDATE имя_таблицы SET столбец = значение WHERE условие;
    • UPDATE — указывает, в какой таблице менять данные.
    • SET — задает новые значения.
    • WHERE — обязательное условие, которое определяет, какие строки обновлять.

    Важно! Если вы забудете WHERE, изменятся все записи в таблице. Это частая и критическая ошибка.

    Пример: исправляем email пользователя с id = 42:

    UPDATE users SET email = 'new@example.com' WHERE id = 42;

    Простые примеры UPDATE SQL

    Как изменить одну запись в таблице SQL

    Самый безопасный сценарий — обновление по уникальному идентификатору:

    UPDATE products SET price = 299 WHERE id = 7;

    Как обновить несколько полей одним запросом

    Можно менять сразу несколько столбцов:

    UPDATE customers SET name = 'Мария Иванова', phone = '+79991234567' WHERE id = 101;

    Массовое обновление данных в SQL

    Оператор UPDATE отлично подходит для массовых операций.

    Обновление по условию

    Например, повышаем цену на все товары в категории «Электроника» (category_id = 3) на 10%:

    UPDATE products SET price = price * 1.1 WHERE category_id = 3;

    Вычисляемые значения

    Вы можете использовать арифметические операции, функции и даже ссылаться на другие столбцы:

    UPDATE logs SET processed_at = NOW() WHERE status = 'pending';

    Продвинутые техники: обновление из другой таблицы

    Часто нужно обновить данные на основе информации из другой таблицы — например, применить скидки из справочника.

    В MySQL (через JOIN):

    UPDATE products p JOIN discounts d ON p.id = d.product_id SET p.price = p.price - d.amount WHERE d.active = 1;

    В PostgreSQL и MS SQL (через FROM):

    UPDATE products SET price = price - d.amount FROM discounts d WHERE products.id = d.product_id AND d.active = 1;

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

    Если JOIN не подходит, используйте подзапрос:

    UPDATE products SET discount = (    SELECT amount    FROM discounts    WHERE product_id = products.id ) WHERE EXISTS (    SELECT 1 FROM discounts WHERE product_id = products.id );

    Безопасность: как не сломать базу

    Всегда проверяйте условие через SELECT

    Перед обновлением выполните аналогичный SELECT:

    -- Сначала проверяем SELECT id, name FROM users WHERE age < 18;
    -- Потом обновляем UPDATE users SET status = 'minor' WHERE age < 18;

    Используйте транзакции

    Для критических операций (например, перевод денег) оборачивайте запросы в транзакцию:

    BEGIN; UPDATE accounts SET balance = balance - 100 WHERE user_id = 1; UPDATE accounts SET balance = balance + 100 WHERE user_id = 2; COMMIT; -- или ROLLBACK при ошибке

    Ограничивайте количество строк (MySQL)

    UPDATE logs SET processed = 1 WHERE status = 'new' LIMIT 100;

    Распространенные ошибки и способы их избежать

    • Забыли WHERE — обновили всю таблицу.
      Решение: всегда проверяйте через SELECT.
    • Несовместимые типы данных.
      Решение: убедитесь, что типы значений совпадают со структурой таблицы.
    • Подзапрос возвращает больше одной строки.
      Решение: добавьте LIMIT 1 или уточните условие.
    • Попытка записать NULL в NOT NULL-поле.
      Решение: либо измените схему, либо передавайте допустимое значение.

    Коротко об UPDATE

    Оператор UPDATE — основной способ изменить данные в таблице SQL. Он поддерживает массовые операции, вычисления, JOIN и подзапросы. Правильное применение UPDATE критически важно при работе с высоконагруженными системами, ETL-процессами и синхронизацией с маркетплейсами.

    Всегда используйте WHERE, чтобы случайно не обновить все строки. Для безопасности проверяйте через SELECT, используйте транзакции и ограничивайте объем изменений.

    Разбор

    Поделиться

    Скопировано
    0 комментариев
    Комментарии