דילוג לתוכן המרכזי
מודול 8 · שיעור 1 מתוך 429/57 בקורס~10 min
שיעורי מודול (1/4)

הוספת נתונים: INSERT

עד כה קראת נתונים. הגיע הזמן לכתוב קצת. INSERT הוא הפקודה שמוסיפה שורות חדשות לטבלה.

התחביר הבסיסי

SQL
INSERT INTO tabella (col1, col2, …)
VALUES (val1, val2, …);

דוגמה במערך הנתונים שלנו:

SQL
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 נפרדות:

SQL
INSERT INTO categories (name, parent_id) VALUES
  ('Gaming',         1),
  ('Smart Home',     1),
  ('Cucina vegana',  8);

RETURNING: קריאת הערכים שזה עתה הוספת

משפט מאפיין של PostgreSQL: RETURNING מחזיר את השורות ש רק נוצרו. שימושי במיוחד לאחזור ה-id שנוצר אוטומטית:

SQL
INSERT INTO categories (name, parent_id)
VALUES ('Gaming', 1)
RETURNING id, name;

הפלט הוא טבלה של שורה אחת עם id (מוקצה על ידי SERIAL) ו name.

מה קורה אם חסרה עמודה

אם תשמיט עמודה ב-INSERT:

  • אם זה NOT NULL ללא DEFAULT → שגיאה;
  • אם יש לו DEFAULT (כולל SERIAL עבור id) → שנמצא בשימוש;
  • אם הוא מקבל את NULL → הוא הופך לNULL.
SQL
-- 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');

התור שלך

פעילות גופנית#sql.m8.l1.e1
ניסיונות: 0טוען...

הוסף לטבלת הלקוחות לקוח חדש עם השם הפרטי 'מרקו', שם_המשפחה 'Bianchi', דוא"ל 'marco.bianchi@example.com', העיר 'ורונה', המדינה 'איטליה' והתחבר_ב-'2025-07-15'. שם במפורש לכל העמודות.

טוען עורך...
הצג רמז

סדר הערכים ב-VALUES חייב להתאים לסדר העמודות שציינתם.

הפתרון זמין לאחר 3 ניסיונות

סקירת התרגיל

פעילות גופנית#sql.m8.l1.e2
ניסיונות: 0טוען...

הוסף קטגוריית 'משחקים' חדשה בתור ילד של 'Elettronica' (מזהה = 1). השתמש בסעיף RETURNING כדי להחזיר את המזהה והשם של הקטגוריה החדשה שנוצרה.

טוען עורך...
הצג רמז

RETURNING מקבל רשימה של עמודות (או '*') בדיוק כמו SELECT.

הפתרון זמין לאחר 3 ניסיונות