モジュール 8 · レッスン 2 / 4コース内の 30/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読み込み中…
カテゴリ 5 (コンピュータ) のすべての製品の価格を 10% 値上げします。単一の UPDATE ステートメント。
エディターを読み込み中…
ヒントを表示
SET の右側の式は、列自体を参照できます (price * 1.10)。
3 回の試行後に解決策が利用可能になります
復習演習
運動#sql.m8.l2.e2
試行回数: 0読み込み中…
評価が 3 未満のレビュー (非常に否定的なレビュー) をすべて削除します。
エディターを読み込み中…
ヒントを表示
WHERE 評価 < 3。
3 回の試行後に解決策が利用可能になります