שיעורי מודול (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 (מחשב). הצהרת עדכון אחת.
הצג רמז
הביטוי מימין ל-SET יכול להתייחס לעמודה עצמה: מחיר * 1.10.
הפתרון זמין לאחר 3 ניסיונות
סקירת התרגיל
מחק כל ביקורת עם דירוג נמוך מ-3 (ביקורות שליליות מאוד).
הצג רמז
דירוג WHERE < 3.
הפתרון זמין לאחר 3 ניסיונות