שיעורי מודול (1/4)
הוספת נתונים: INSERT
עד כה קראת נתונים. הגיע הזמן לכתוב קצת. INSERT הוא
הפקודה שמוסיפה שורות חדשות לטבלה.
התחביר הבסיסי
INSERT INTO tabella (col1, col2, …)
VALUES (val1, val2, …);דוגמה במערך הנתונים שלנו:
INSERT INTO customers (first_name, last_name, email, city, country, signed_up_on)
VALUES ('Marco', 'Bianchi', 'marco.bianchi@example.com', 'Verona', 'Italia', '2025-07-15');מתן שמות לעמודות הוא התרגול המומלץ: הוא עושה את השאילתה
עמיד בפני שינויים בסכימה עתידיים (למשל, עמודה phone אופציונלית חדשה
לא שובר כלום) ותיעוד עצמי.
INSERT רב שורות
הצהרה בודדת, שורות מרובות - הרבה יותר מהר מ-N INSERTs נפרדות:
INSERT INTO categories (name, parent_id) VALUES
('Gaming', 1),
('Smart Home', 1),
('Cucina vegana', 8);RETURNING: קריאת הערכים שזה עתה הוספת
משפט מאפיין של PostgreSQL: RETURNING מחזיר את השורות ש
רק נוצרו. שימושי במיוחד לאחזור ה-id שנוצר אוטומטית:
INSERT INTO categories (name, parent_id)
VALUES ('Gaming', 1)
RETURNING id, name;הפלט הוא טבלה של שורה אחת עם id (מוקצה על ידי SERIAL) ו
name.
מה קורה אם חסרה עמודה
אם תשמיט עמודה ב-INSERT:
- אם זה
NOT NULLללא DEFAULT → שגיאה; - אם יש לו
DEFAULT(כוללSERIALעבור id) → שנמצא בשימוש; - אם הוא מקבל את
NULL→ הוא הופך לNULL.
-- Va bene: id è SERIAL (auto), country ha NOT NULL ma forniamo tutti i campi
INSERT INTO customers (first_name, last_name, email, city, country, signed_up_on)
VALUES ('Olivia', 'Marini', 'olivia.marini@example.com', 'Bari', 'Italia', '2025-07-20');
-- Errore: first_name è NOT NULL e non è fornito
INSERT INTO customers (last_name, email, city, country, signed_up_on)
VALUES ('Marini', 'olivia.marini@example.com', 'Bari', 'Italia', '2025-07-20');התור שלך
הוסף לטבלת הלקוחות לקוח חדש עם השם הפרטי 'מרקו', שם_המשפחה 'Bianchi', דוא"ל 'marco.bianchi@example.com', העיר 'ורונה', המדינה 'איטליה' והתחבר_ב-'2025-07-15'. שם במפורש לכל העמודות.
הצג רמז
סדר הערכים ב-VALUES חייב להתאים לסדר העמודות שציינתם.
הפתרון זמין לאחר 3 ניסיונות
סקירת התרגיל
הוסף קטגוריית 'משחקים' חדשה בתור ילד של 'Elettronica' (מזהה = 1). השתמש בסעיף RETURNING כדי להחזיר את המזהה והשם של הקטגוריה החדשה שנוצרה.
הצג רמז
RETURNING מקבל רשימה של עמודות (או '*') בדיוק כמו SELECT.
הפתרון זמין לאחר 3 ניסיונות