משך: 2.5 שעות אקדמיות (113 דקות).

מטרת השיעור: הסטודנטים יכירו את חמש פקודות ה-SQL הבסיסיות (CREATE TABLE, INSERT, SELECT, UPDATE, DELETE) ויתרגלו אותן בפועל על מסד נתונים אמיתי, לפני שנוגעים בעיצוב טבלאות מתקדם או ב-EF Core.

בסוף השיעור הסטודנטים צריכים: לבנות טבלה בסיסית, להוסיף/לקרוא/לעדכן/למחוק שורות בה עם SQL גולמי, ולהבין למה WHERE הוא קריטי ב-UPDATE/DELETE.

דגש קריטי: זהו שיעור היסודות של כל היחידה — סטודנט שלא מרגיש בטוח עם SELECT/WHERE בסיסי כאן, ייתקע הרבה יותר בשיעור העיצוב ובוודאי ב-EF Core. הקדישו זמן אמיתי לתרגול ידני מול מסד נתונים אמיתי (למשל דרך Azure Data Studio / SSMS / כל כלי GUI פשוט), לא רק קריאת שקופיות.


מהלך השיעור

חלק בשיעורמשךהערות ודגשים
פתיחה וחיבור8 דקותהזכירו: List<T> נעלם כשהתוכנית נסגרת — SQL הוא הפתרון לכך
CREATE TABLE15 דקותעמודות, טיפוסים בסיסיים, PRIMARY KEY + IDENTITY (בלי להעמיק ב-FK — זה בשיעור הבא)
INSERT + SELECT25 דקותהוספת שורות, קריאת הכול, קריאת עמודות ספציפיות
WHERE + ORDER BY25 דקותסינון והשוואה ל-if/&&/`
UPDATE + DELETE20 דקותהדגישו בכוח את הסכנה בלי WHERE — ראו “תרגיל חשיבה” למטה
תרגול מודרך20 דקותתרגיל 1+2 + התחלת הפרויקט המסכם

דגשים להעברת השיעור

  • זהו שיעור ידיים-על-המקלדת יותר מכל שיעור תיאוריה — כל פקודה שמוצגת צריכה לרוץ בפועל מול מסד נתונים אמיתי (גם אם ריק/לדוגמה), לא רק להיקרא משקופית.
  • הדגישו את ההבדל בין SELECT (קריאה בלבד, בטוח להריץ כמה פעמים שרוצים) לבין INSERT/UPDATE/DELETE (משנים נתונים בפועל) — זו הבחנה שתחזור ב-HTTP Methods וב-DAL Pattern ביחידות הבאות.
  • אל תדלגו על התרגול של UPDATE/DELETE בלי WHERE בכוונה (בסביבת תרגול מבודדת/לדוגמה בלבד!) — לראות בעיניים איך כל הטבלה מתעדכנת/נמחקת שווה יותר מכל אזהרה מילולית.

מושגים

Database — מקום ששומר מידע לצמיתות. Table — עמודות קבועות + שורות, כמו גיליון אקסל. Row / Column — רשומה בודדת / שדה קבוע בטבלה. Query — פקודת SQL בודדת. Primary Key — עמודה שמזהה כל שורה בייחודיות (יורחב בשיעור הבא).


תרגיל חשיבה

שאלת פתיחה: “מה ההבדל בין DELETE FROM Students WHERE Id = 2; לבין DELETE FROM Students; — ולמה SQL לא מתריע כשמריצים את השנייה?”

מהלך: הובילו לתובנה: SQL לא “יודע” שהתכוונתם למחוק שורה אחת — הוא רק מבצע בדיוק את מה שנכתב. בלי WHERE, אין הגבלה, אז “כל השורות” הוא לא מקרה מיוחד — הוא פשוט המצב הרגיל כשאין תנאי. זו אחריות הכותב, לא בדיקה של השפה.

מה המרצה מראה בסוף: בסביבת תרגול מבודדת (טבלת דוגמה לא-חשובה!), הריצו SELECT * FROM Students WHERE Age > 20; ואז את אותו WHERE בתוך UPDATE/DELETE, כדי להראות טכניקת עבודה בטוחה: קודם בודקים עם SELECT אילו שורות ייפגעו, ורק אז מריצים את השינוי בפועל עם אותו תנאי.