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

Обновление и удаление: ОБНОВЛЕНИЕ и УДАЛЕНИЕ.

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 может ссылаться на сам столбец: цена * 1,10.

Решение доступно после 3 попыток

Обзор упражнения

Упражнение#sql.m8.l2.e2
Попыток: 0Загрузка…

Удалите каждый отзыв с рейтингом ниже 3 (очень негативные отзывы).

Загрузка редактора…
Показать подсказку

ГДЕ рейтинг < 3.

Решение доступно после 3 попыток