ללמוד SQL מאפס - מדריך מעשי¶
חשוב לומר בהתחלה - SQL היא לא שפת תכנות "מלאה" כמו Python או JavaScript, אלא שפת שאילתות (query language) שמדברת עם מסדי נתונים. באתר הזה הקורס הבסיסי מלמד Python, אבל SQL היא כלי שכמעט כל מתכנת נתקל בו במוקדם או במאוחר - וטוב לדעת אותה בין אם אתם backend, data, או אפילו frontend שצריך להבין מאיפה המידע מגיע. הנה איך בפועל מתחילים ללמוד אותה מאפס.
מה מתקינים לפני שמתחילים¶
היתרון הגדול של SQL הוא שאין צורך בהתקנה כבדה כדי להתחיל. שלוש דרכים מומלצות למתחילים:
- SQLite - מסד נתונים קליל שרץ מקובץ בודד בלי שרת, מצוין ללמידה. אפשר להשתמש בו דרך כלי כמו DB Browser for SQLite, שיש לו ממשק גרפי נוח.
- אתרי תרגול אונליין - יש כלים שמריצים SQL ישירות בדפדפן בלי שום התקנה, אם אתם רוצים להתחיל תוך דקה.
- PostgreSQL או MySQL - אם אתם כבר יודעים שתעבדו על פרויקט אמיתי, כדאי להתקין אחד מהם מקומית, אבל זה לא חובה בשלב הראשוני.
לרוב, ההמלצה למתחילים היא להתחיל ב-SQLite או בכלי דפדפן, ורק כשמרגישים בנוח לעבור למסד נתונים "אמיתי".
תוכנית שבוע ראשון¶
- ימים 1-2: SELECT, FROM ו-WHERE. זה הבסיס המוחלט - איך שולפים נתונים מטבלה ואיך מסננים אותם לפי תנאי.
- ימים 3-4: מיון וסידור עם ORDER BY, הגבלת תוצאות עם LIMIT, ופונקציות צבירה כמו COUNT, SUM ו-AVG.
- ימים 5-7: GROUP BY - זה הרגע שבו SQL מתחילה להרגיש עוצמתית, כשאתם מקבצים נתונים ומחשבים סטטיסטיקות לפי קטגוריה, למשל "כמה הזמנות היו לכל לקוח".
החלק שכולם נתקעים בו - JOIN¶
ה-JOIN הוא בלי ספק המושג הכי מבלבל למתחילים ב-SQL, וגם החשוב ביותר. מסדי נתונים אמיתיים מפצלים מידע לכמה טבלאות (לקוחות בטבלה אחת, הזמנות בטבלה שנייה), ו-JOIN הוא הדרך לחבר ביניהן ולשלוף תמונה מלאה. אל תדלגו על השלב הזה ואל תתייאשו אם זה לוקח כמה ימים להבין - תרגלו INNER JOIN קודם, עם דוגמה קונקרטית של שתי טבלאות פשוטות על הנייר לפני שאתם כותבים קוד, ורק אחר כך תעברו ל-LEFT JOIN.
הפרויקט הראשון שכדאי לבנות¶
הדרך הכי טובה ללמוד SQL היא לא לתרגל שאילתות מנותקות, אלא לבנות מסד נתונים קטן על נושא שמעניין אתכם - למשל טבלת סרטים עם דירוגים, או טבלת ספרייה עם ספרים והשאלות. תיצרו כמה טבלאות מקושרות, תמלאו אותן בנתונים לדוגמה, ואז תכתבו שאילתות אמיתיות כמו "אילו סרטים דורגו מעל 8 בשנה מסוימת" או "אילו לקוחות לא החזירו ספר". שאילתות עם משמעות אמיתית נזכרים הרבה יותר טוב מתרגילים מנותקי הקשר.
הטעויות הכי נפוצות של מתחילים ב-SQL¶
- לשכוח WHERE לפני UPDATE או DELETE. זו הטעות הכי מסוכנת ב-SQL - הרצת UPDATE או DELETE בלי תנאי WHERE משנה או מוחקת את כל השורות בטבלה. תמיד תריצו קודם SELECT עם אותו תנאי כדי לוודא שהוא תופס בדיוק את השורות שהתכוונתם אליהן.
- לבלבל בין WHERE ל-HAVING. WHERE מסנן שורות לפני קיבוץ, HAVING מסנן אחרי קיבוץ. זה נשמע דקדוקי אבל זו טעות נפוצה מאוד.
- לא להבין את סדר הביצוע. SQL נכתבת בסדר אחד (SELECT, FROM, WHERE) אבל מתבצעת בפועל בסדר אחר. הבנת זה מסבירה הרבה התנהגויות שנראות מוזרות בהתחלה.
- להימנע מ-JOIN ולנסות "לפצח" הכל עם שאילתות נפרדות. זה בדיוק מה ש-JOIN נועד לפתור - תתעקשו ללמוד אותו כמו שצריך.
הצד השני של המטבע - SQL Injection¶
ברגע שאתם מבינים SQL, שווה גם להכיר את הסיכון הביטחוני הבסיסי שלה - SQL Injection, שבו קלט זדוני ממשתמש "נבלע" בתוך שאילתה ומאפשר גישה למידע שלא אמור להיות נגיש. זה לא נושא למתחילים גמורים, אבל טוב לדעת שהוא קיים ברגע שאתם עוברים מתרגול לבניית מערכת אמיתית שמקבלת קלט ממשתמשים.
איך זה מתחבר לצד התכנות¶
SQL כמעט תמיד מגיעה יחד עם שפת תכנות שמריצה אותה - Python, JavaScript, Java וכדומה. אם אתם עוד לא יודעים שפת תכנות בכלל, שווה להתחיל שם קודם, כי SQL לבדה לא בונה אפליקציות.
הקורס הבסיסי שלנו בפייתון מלמד את היסודות בעברית ובחינם, ומשם קל מאוד לחבר Python למסד נתונים ולתרגל SQL בתוך פרויקט אמיתי.
לסיכום¶
SQL היא אחת השפות הכי "משתלמות" ללמידה - קצרה יחסית, לוגית, ופתאום עובדת כמעט בכל תפקיד טכני. תתחילו מ-SELECT ו-WHERE, תתעקשו על JOIN גם כשזה מבלבל, ותבנו מסד נתונים על נושא שמעניין אתכם במקום לתרגל בוואקום.
יש לכם שאלות בדרך? בואו לדבר בקהילה.