В предыдущем уроке мы научились добавлять новые строки с помощью INSERT INTO. Теперь рассмотрим, как изменять уже существующие данные с помощью оператора UPDATE. Это одна из ключевых операций DML, позволяющая поддерживать базу данных в актуальном состоянии.
UPDATE table_name
SET column1 = value1, column2 = value2, ...
WHERE condition;
UPDATE table_name — указывает таблицу, в которой нужно изменить данные.SET column = value — задаёт новые значения для одного или нескольких столбцов.WHERE condition — определяет, какие именно строки нужно обновить.WHERE: Без условия WHERE оператор UPDATE изменит все строки в таблице. Это одна из наиболее частых и опасных ошибок.').UPDATE внутри транзакции, чтобы иметь возможность откатить изменения в случае ошибки.Изменим адрес электронной почты конкретного покупателя в таблице customer.
UPDATE customer
SET email = 'new.email@example.com'
WHERE customer_id = 1;
Примечание: Условие WHERE customer_id = 1 гарантирует, что изменится только одна конкретная запись.
В операторе SET можно перечислить несколько столбцов через запятую.
UPDATE customer
SET first_name = 'ALICE',
last_name = 'COOPER',
email = 'alice.cooper@example.com'
WHERE customer_id = 42;
Оператор UPDATE позволяет вычислять новое значение на основе текущего. Например, увеличим стоимость аренды всех фильмов категории «Comedy» на 10%:
UPDATE film
SET rental_rate = rental_rate * 1.10
WHERE film_id IN (
SELECT f.film_id
FROM film f
JOIN film_category fc ON f.film_id = fc.film_id
JOIN category c ON fc.category_id = c.category_id
WHERE c.name = 'Comedy'
);
Результат: у всех фильмов жанра «Comedy» стоимость аренды увеличится на 10%.
Пометим всех неактивных покупателей, которые не совершали аренду после определённой даты:
UPDATE customer
SET active = 0
WHERE customer_id NOT IN (
SELECT DISTINCT customer_id
FROM rental
WHERE rental_date >= '2005-08-01'
);
Если столбец допускает NULL, его можно явно очистить:
UPDATE film
SET original_language_id = NULL
WHERE film_id = 10;
Хорошей практикой является сначала выполнить SELECT с тем же условием WHERE, чтобы убедиться, что будут изменены именно нужные строки:
-- Сначала проверяем, что вернёт SELECT
SELECT customer_id, first_name, last_name, email
FROM customer
WHERE customer_id = 1;
-- Только после проверки выполняем UPDATE
UPDATE customer
SET email = 'new.email@example.com'
WHERE customer_id = 1;
Ключевые выводы этого урока:
UPDATE изменяет существующие строки в таблице.WHERE будут обновлены все строки таблицы — всегда проверяйте его наличие.SET можно обновить сразу несколько столбцов, разделив их запятыми.price = price * 1.1).UPDATE рекомендуется сделать SELECT с тем же условием, чтобы проверить затрагиваемые строки.В следующем уроке мы рассмотрим оператор DELETE — как удалять строки из таблицы безопасно и контролируемо.