Обновление данных: UPDATE — изменение существующих записей

Что делает оператор UPDATE и когда он нужен? 🔄

Оператор UPDATE — это ваш волшебный инструмент для внесения изменений в уже существующие данные таблицы. Представьте: у вас есть база данных интернет-магазина, и нужно:

  • Изменить цену товара после скидки
  • Обновить email клиента
  • Исправить опечатку в описании продукта

Ручное редактирование? Ни за что! UPDATE справится за миллисекунды.


Базовый синтаксис: как "разбудить" UPDATE 🛠️

Минимальная рабочая конструкция выглядит так:

UPDATE table_name
SET column1 = value1, column2 = value2
WHERE condition;

Где:

  • table_name — имя изменяемой таблицы
  • SET указывает какие столбцы менять
  • WHERE фильтрует записи для обновления (это важно!)

Опасный пример: что будет без WHERE ⚠️

Попробуем "улучшить" все товары в магазине:

UPDATE products
SET price = 100;

Результат: У всех товаров цена станет 100! Это катастрофа. Всегда проверяйте WHERE перед выполнением.


Практический пример: точечное обновление 🎯

Исправим email конкретного клиента:

UPDATE customers
SET email = 'new_email@example.com'
WHERE customer_id = 42;

Теперь только клиент с id 42 получит обновление. Безопасно и точно!


Обновление нескольких столбцов сразу 💪

Можно менять несколько полей за один запрос:

UPDATE employees
SET 
    salary = salary * 1.1,
    department = 'IT',
    last_promotion = CURRENT_DATE
WHERE employee_id = 7;

Это повышает зарплату на 10%, меняет отдел и дату повышения для сотрудника №7.


Хитрости: обновление на основе выражений 🧮

UPDATE умеет вычисления! Обновим цены с учётом скидки:

UPDATE products
SET price = price * 0.9  -- 10% скидка
WHERE category = 'Electronics';

Все электронные товары стали дешевле на 10%. Магия SQL!


Каскадное обновление: когда важны связи ⛓️

При работе с внешними ключами будьте осторожны:

UPDATE departments
SET department_id = 5
WHERE department_id = 3;

Если есть каскадные ограничения, это может изменить записи в связанных таблицах. Всегда проверяйте схему БД перед массовыми обновлениями.


Проверка перед обновлением: спасительный SELECT 🔍

Перед UPDATE выполните SELECT с теми же условиями:

SELECT * FROM products
WHERE price > 1000;  -- Смотрим что будем менять

UPDATE products
SET price = price * 0.8
WHERE price > 1000;  -- Затем обновляем

Это ваш страховочный парашют от ошибок.


Производительность: массовые обновления ⚡

Для тысяч записей используйте:

  • Пакетные обновления
  • Временные таблицы
  • Индексы по условию WHERE

Пример пакетного обновления:

UPDATE large_table
SET status = 'processed'
WHERE id BETWEEN 1 AND 10000;

Ограничения и безопасность 🔒

Запомните золотые правила:

  1. Всегда делайте резервную копию перед массовыми изменениями
  2. Используйте транзакции для критических обновлений
  3. Ограничивайте права пользователей
Скрыть рекламу навсегда

🧠 Учёба без воды и зубрёжки

Закрытый Boosty с наработками опытного преподавателя.

Объясняю сложное так, чтобы щелкнуло.

🚀 Забрать доступ к Boosty