On this page
מערך שיעור: SQL בסיסי
משך: 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 TABLE | 15 דקות | עמודות, טיפוסים בסיסיים, PRIMARY KEY + IDENTITY (בלי להעמיק ב-FK — זה בשיעור הבא) |
| INSERT + SELECT | 25 דקות | הוספת שורות, קריאת הכול, קריאת עמודות ספציפיות |
| WHERE + ORDER BY | 25 דקות | סינון והשוואה ל-if/&&/` |
| UPDATE + DELETE | 20 דקות | הדגישו בכוח את הסכנה בלי 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 אילו שורות ייפגעו, ורק אז מריצים את השינוי בפועל עם אותו תנאי.