Уроки модуля (2/4)
Обновление и удаление: ОБНОВЛЕНИЕ и УДАЛЕНИЕ.
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 может ссылаться на сам столбец: цена * 1,10.
Решение доступно после 3 попыток
Обзор упражнения
Удалите каждый отзыв с рейтингом ниже 3 (очень негативные отзывы).
Показать подсказку
ГДЕ рейтинг < 3.
Решение доступно после 3 попыток