Модульні уроки (2/4)
Оновлення та видалення: UPDATE і DELETE
UPDATE змінює існуючі рядки; DELETE видаляє їх. Обидва поділяють
те саме фундаментальне золоте правило: пункт WHERE вирішує, які рядки
торкатися. Забути це означає змінити/видалити всю таблицю.
ОНОВЛЕННЯ
UPDATE tabella
SET colonna1 = nuovo_valore,
colonna2 = altra_espressione
WHERE condizione;приклади:
-- Aumenta del 10% i prezzi di tutti i prodotti della categoria 5 (Computer):
UPDATE products
SET price = price * 1.10
WHERE category_id = 5;
-- Aggiorna due colonne contemporaneamente:
UPDATE orders
SET status = 'shipped',
shipped_at = NOW()
WHERE id = 12;SET col = espressione: вираз може посилатися на поточний рядок
значення (price * 1.10), а також можна використовувати NOW(), NULL або
підзапити.
ВИДАЛИТИ
DELETE FROM tabella
WHERE condizione;приклади:
-- Cancella tutte le recensioni con rating < 3:
DELETE FROM reviews
WHERE rating < 3;
-- Cancella un ordine specifico:
DELETE FROM orders WHERE id = 999;ПОВЕРНЕННЯ сюди теж
Як INSERT, UPDATE та DELETE також приймають RETURNING, щоб ви знали
на що вони діяли:
DELETE FROM reviews
WHERE rating < 3
RETURNING id, customer_id, rating;Корисно для входу в один кадр, що було видалено/змінено.
Зовнішні ключі та видалення
Спроба видалити рядок, на який посилається інша таблиця, через зовнішній ключ видає помилку:
DELETE FROM customers WHERE id = 1;
-- ERROR: update or delete on table "customers" violates foreign key constraint
-- on table "orders"Рішення: спочатку видаліть дочірні рядки або визначте FK за допомогою
ON DELETE CASCADE під час створення таблиці (ми розглянемо це в
наступний урок DDL).
Ваша черга
Збільште на 10% ціну на кожен продукт у категорії 5 (Комп’ютер). Один оператор UPDATE.
Показати підказку
Вираз праворуч від SET може посилатися на сам стовпець: price * 1.10.
Рішення доступне після 3 спроб
Повторна вправа
Видалити всі відгуки з оцінкою нижче 3 (дуже негативні відгуки).
Показати підказку
WHERE оцінка < 3.
Рішення доступне після 3 спроб