Перейти до основного вмісту
Модуль 8 · Урок 2 із 430/57 у курсі~10 min
Модульні уроки (2/4)

Оновлення та видалення: UPDATE і DELETE

UPDATE змінює існуючі рядки; DELETE видаляє їх. Обидва поділяють те саме фундаментальне золоте правило: пункт WHERE вирішує, які рядки торкатися. Забути це означає змінити/видалити всю таблицю.

ОНОВЛЕННЯ

SQL
UPDATE tabella
SET    colonna1 = nuovo_valore,
       colonna2 = altra_espressione
WHERE  condizione;

приклади:

SQL
-- 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 або підзапити.

ВИДАЛИТИ

SQL
DELETE FROM tabella
WHERE  condizione;

приклади:

SQL
-- 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, щоб ви знали на що вони діяли:

SQL
DELETE FROM reviews
WHERE  rating < 3
RETURNING id, customer_id, rating;

Корисно для входу в один кадр, що було видалено/змінено.

Зовнішні ключі та видалення

Спроба видалити рядок, на який посилається інша таблиця, через зовнішній ключ видає помилку:

SQL
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).

Ваша черга

вправи#sql.m8.l2.e1
Спроби: 0Завантаження…

Збільште на 10% ціну на кожен продукт у категорії 5 (Комп’ютер). Один оператор UPDATE.

Завантаження редактора…
Показати підказку

Вираз праворуч від SET може посилатися на сам стовпець: price * 1.10.

Рішення доступне після 3 спроб

Повторна вправа

вправи#sql.m8.l2.e2
Спроби: 0Завантаження…

Видалити всі відгуки з оцінкою нижче 3 (дуже негативні відгуки).

Завантаження редактора…
Показати підказку

WHERE оцінка < 3.

Рішення доступне після 3 спроб