מחפשים קורס SQL למתחילים בחינם? במדריך SQL הבא, נלמד איך לכתוב בשפת תכנות זו, לתחקר נתונים ברמה מקצועית וגם נתרגל דוגמאות מהשטח כדי להכין אתכם לעבודה עצמאית. SQL היא שפת תכנות המאפשרת לנו לגשת למידע, למיינו ולעשות עליו מניפולציות. המידע או ״הדאטה״ הוא הקבצים השמורים בתוך מחסן נתונים שלנו, הנקרא גם Data Base. אם באתם להתאמן על מבחנים בראיונות עבודה כנסו ללינק הזה אם כבר הסתבכתם בהסברים הנ״ל, אל דאגה - במדריך הבא שהוא חלק מסדרה של מאמרים מפורטים, נלמד אתכם את כל מה שחשוב בצורה פשוטה וברורה, נציג מגוון רעיונות וגם פרקטיקות מהשטח. כל זאת במטרה שבעתיד, תוכלו לבנות דאטה בייס ולתחקר את הנתונים שלכם בעצמכם. גם אם אין לכם תואר בהנדסה (כמונו), תשלטו בנושא כמו מקצוענים אמיתיים ואפילו תוכלו להנות על הדרך. למה בעצם ללמוד SQL? לימוד SQL ממש לא מסובך כמו שהוא נשמע, אתם תתפלאו כמה השליטה בשפה תהיה אינטואיטיבית אחרי מספר תרגולים איתנו. האמת היא, שאין צורך בתואר שני בשביל לענות על שאלות שמעניינות אתכם, בין אם אתם: אנליסטים, אנשי שיווק, יועצים פיננסיים, מנהלי מוצר או פשוט אנשים סקרנים מטבעם, המדריך הבא יעניק לכם הבנה מעמיקה בבעיה העסקית דרך הנתונים שברשותכם. רגע, כבר מתחילים ללמוד? עדיין לא, בואו נעבור קודם על כמה מושגי יסוד חשובים, מבטיחים שזה לא יישמע כמו ג׳יבריש! מהו בסיס נתונים (Data Base)? בסיס נתונים מכיל מספר גדול של טבלאות המייצגות מידע כלשהו ויושבות באותו מחסן נתונים, ממש כמו בקבצי האקסל שאתם מכירים. לדוגמא: בחנות שלי קיימת טבלה המייצגת מכירות, טבלה המייצגת מלאי וכן הלאה. כך נלמד אתכם את נושא הטבלאות בצורה היעילה ביותר: נעבוד עם צילומים של טבלאות, כאשר כל עמודה תיוצג בצבע משלה. המטרה כאן היא להקל עליכם מבחינת האתגר שעליכם לקלוט המון מידע במקביל. לכל הנושאים שנציג, יתווספו שאלות לדוגמא, כך שתצליחו להתעמק בנושא ואף לתרגל את אותן שאלות במקביל על דף או על קובץ במחשב. הדרך להצלחה היא על ידי תרגול רב. סקרנים לדעת על כמה תרגילים מדובר כדי להצליח לתחקר ברמה גבוהה? כמובן שזה מאוד אינדיבידואלי, אך בהחלט יש צורך ב-50 שאלות לפחות וכמובן, להמשיך לתרגל כמה שניתן כדי לשמר את מה שלמדנו. 3 סוגי נתונים מרכזיים בטבלה: מספר int - בעמודה כזו יכולים להכנס מספרים בלבד. למה? זה יקל עלינו לדעת שהבסיס מסודר כמו שצריך. לדוגמא: תחשבו על קובץ אקסל שבו יש טבלה המכילה הכנסות לפי יום. אם בטעות נלחץ בהמשכיות על האות ״ל״ במקלדת, אז יופיע לנו באמצע הטבלה: ״ללללללל״. לא נעים, נכון? כדי למנוע מקרים כאלו, בבסיס נתונים דבר כזה לא יכול לקרות כי סוג העמודה מקבלת רק ערכים מספריים. String - עמודה זו משמשת לערכים שהם טקסט, אך תיאורטית היא יכולה לקבל כל ערך בטבלה. Date - עמודה זו משמשת לערכים מסוג תאריך. SQL Query (או בשמה הנוסף ״שאילתה״): שאילתה בשפה המקצועית היא מה שכתבנו על מנת לקבל את הערכים הרצויים. בתכלס, זה מה שאנחנו הולכים ללמוד במדריך SQL הזה ממש! בואו נעבור על דוגמא מעניינת ועל הדרך נשתמש ב- SQL :) לפנינו טבלה דמיונית של עובדים מכל העולם במחלקות דאטה, לפי תפקידים שונים: בואו נאמר, שיש מספר שאלות שמאוד מעניינות אותנו ונרצה לקבל עליהם תשובה. בשביל זה, אנחנו צריכים לדעת איך לשלוף את הנתונים הרלוונטיים לנו. SELECT 1. כך תוכלו לשלוף את כל המידע מהטבלה (לאחר מכן תוכלו להשתמש באקסל): SELECT * FROM data_salaries שימו לב שזה ממש דומה לשפה האנושית: לבחור ב״כוכבית״ משמע, בחירת כל העמודות הקיימות בטבלה. דמיינו מצב שבו יש מאה עמודות בטבלה, כמה מבאס זה יהיה לרשום את כל השמות בקוד. בדיוק בשביל זה, אפשר פשוט לסמן כוכבית. 2. בצורה הבאה, תוכלו לבחור להציג רק חלק מהעמודות: SELECT First_name email, FROM Data_salaries LIMIT 3. כיצד תוכלו לבחור רק חלק מהשורות? בשביל זה קיימת פונקציה בשם LIMIT שמגבילה את כמות השורות החוזרות. כאן יוחזרו רק שלוש השורות הראשונות בשונה מהדוגמא לפני, שבה חזרו כל השורות הקיימות בטבלה. SELECT First_name, email FROM Data_salaries LIMIT 3 DISTINCT עכשיו שכבר הבנו הכל :), אנחנו נרצה להתחיל להבין יותר לעומק את הנתונים שבטבלה. לדוגמא: איזה תפקידים יש בעמודת data role? תכירו פקודה חדשה בשם DISTINCT: SELECT DISTINCT data_role FROM Data_salaries ORDER BY כיצד ניתן למיין את התוצאות (גדול לקטן, מא עד ת׳ וההפך)? אז, מסתבר שבשביל זה יצרו את הפונקציה ORDER BY .ORDER BY יגיע תמיד בסוף השאילתה. אחרי ה-ORDER BY, נציין ASC סדר עולה או DESC סדר יורד. כאשר לא נציין שום דבר, הפקודה תחשב כ- ASC. כפי שאתם רואים, הפונקציות ממשיכות להקרא בשמות אינטואיטיבים וקלים להבנה (: 4. אנו מעוניינים לקבל את אותה רשימה מלמעלה (איזה תפקידים יש בעמודת data role), אבל ממוינים לפי ה- ABC. SELECT DISTINCT data_role FROM Data_salaries ORDER BY data_role ASC בואו נתרגל את מה שלמדנו: הציגו את כל הנתונים בטבלה. הציגו את עמודת email ,data_role. הציגו את עמודות first_name,last_name, רק את עשרת השורות הראשונות. הציגו רשימת DISTINCT של כל התפקידים. הציגו רשימת DISTINCT של כל התפקידים ושמות משפחה (כמה שורות קיבלתם בשאילתה הקודמת וכמה עכשיו? מה ההבדל?) הציגו את עשרת בעלי השכר הגבוה ביותר (שכר, שם פרטי ושם משפחה) ומה תפקידם? הציגו את עשרת בעלי השכר הגבוה ביותר (שכר, שם פרטי ושם משפחה) ותפקידם, ממוינים לפי ה -ABC. למדנו הרבה מאוד עד כה, אז בוא נסכם את הכל: SELECT, FROM, DISTINCT, LIMIT, ORDER BY ברשותי טבלאות גדולות מאוד - של כמה מאות מיליוני שורות שאותן אני אצטרך לתשאל. לדוגמא, אני אצטרך רק את בעלי השכר הגבוה ביותר של מחלקה מסוימות בלבד. איך אנחנו ממשיכים מכאן? האם אנחנו נרצה רק עובדים מחברות מסוימות? בנוסף, אם יש לי השערה שכל מי שהשם שלו Jeremie הוא בטוח מוצלח, אז איך נקבל רק את התוצאות האלו? WHERE כאשר נרצה ״לפלטר״ את הטבלה, כלומר לסנן שורות לא רלוונטיות, נשתמש בפקודת WHERE. רגע, איך משתמשים? מתי? האם זה חובה? לא, זה ממש לא חובה, אבל רצוי ביותר. למה בעצם? משום שכך נרצה לחקור רק את הנתונים הרלוונטים לנו. WHERE אומר לנו את הדבר הבא: תסמן את העמודה הרלוונטית ואני אסרוק את כל השורות הרלוונטיות. מה שלא יעמוד בתנאים, לא יחזור בתוצאות. את מה אנחנו מפלטרים? סופסוף הקורס SQL הזה מתחיל להיות מעניין. מצליחים לנחש למה? כי מאז שהתחלנו לעבוד עם נתונים, התרגלנו לחשוב ולעבוד ברמת התא. כולנו זוכרים את הפעם הראשונה שלמדנו את פונקציית IF: תמיד היינו מסמנים תא ספציפי ואם היינו מתוחכמים, גם היינו גוררים את הפונקציה מטה. WHERE יגיע אחרי FROM. SELECT * FROM Data_salaries WHERE column_name =<> >< בואו נעבור על כמה דוגמאות: משימה: הצג את כל האנשים שהרוויחו מעל $50,000. כמה שורות יחזרו? תחשבו רגע. תשובה: SELECT * FROM Data_salaries WHERE salary > 50000 התשובה היא - רק אחת! השורה הראשונה היא זאת שתחזור, אילו עמודות יוצגו? כולם, כי בחרתי כוכבית. שאלה: האם אני יכול לבחור להציג רק עמודות מסוימות? תשובה: בוודאי! תלוי בעמודות שאבחר ב-SELECT. שאלה: האם העמודה salary שמופיעה ב-WHERE חייבת להופיע ב-SELECT? תשובה: בוודאי שלא! אין שום קשר בין העמודות שאבחר להציג ב-SELECT לתנאי שאבחר לשים על העמודה ב-WHERE. משימה: הצג את כל האנשים שהרוויחו בין 39000 ל-40000. כמה שורות יחזרו?תחשבו רגע. תשובה SQL: שתי שורות (המסומנות). רוצים לתרגל בעצמכם? מוזמנים לבדוק ולתרגל ב-bigquery. אופציה 1: SELECT * FROM Data_salaries WHERE salary >= 39000 and salary <=40000 אופציה 2: SELECT * FROM Data_salaries WHERE salary between 39000 and 40000 שימו לב לשני דברים חדשים כאן: ניתן להשתמש בתנאי AND. האם זה אומר שאפשר להשתמש גם ב- OR? כמובן, תנאים לוגיים. אילו עוד תנאים קיימים? אנחנו נגלה עד סוף המדריך. ניתן לקרוא לאותה עמודה בכמה תנאים salary. שימוש ב-BETWEEN, פשוטו כמשמעו. משימה: הצג את כל השמות הפרטיים ושמות המשפחה של אלו שהרוויחו מעל $50,000. כמה שורות יחזרו? כמה עמודות יחזרו? תחשבו רגע. תשובה SQL: SELECT first_name, last_name FROM Data_salaries WHERE salary > 50000 תשובה מילולי: רק אחת! השורה הראשונה היא זאת שתחזור. אילו עמודות יוצגו? first_name and last name, כי רק אותן בחרתי ב-SELECT. משימה: הציגו את כל האנשים שתפקידם הוא Director. כמה שורות יחזרו? תחשבו רגע. תשובה: שתי שורות (המסומנות). תשובה SQL: SELECT * FROM Data_salaries WHERE data_role LIKE ’Director’ מה למדנו כאן? שימוש ב-LIKE המשמש למציאת משהו שדומה, עליו נרחיב בהמשך. חיזקנו את ההבנה שלנו, שתמיד נשתמש בשם של העמודה כדי לפלטר את הנתונים על פי התנאי שלה. משימה: הציגו את כל האנשים שתפקידם הוא Director ,VP, Analyst. כמה שורות יחזרו? תחשבו רגע. תשובה: חמש שורות. תשובה SQL: אופציה 1: SELECT * FROM Data_salaries WHERE data_role = ’Director’ OR data_role = ’VP’ OR data_role = ’Analyst’ אופציה 2: SELECT * FROM Data_salaries WHERE data_role IN (’Director’,’VP’,’Analyst’) מה למדנו כאן? שימוש ב-OR: אם אחד מהתנאים מתקיים, תחזיר את הערכים ללא קשר לשני. שימוש ב-IN: שימו לב, שמנו בסוגריים את כל הערכים שרצינו לקבל. מאוד נוח כאשר נרצה לבחור מספר רב של ערכים. מה היה קורה אם היינו רושמים NOT IN? כמה שורות היינו מקבלים? תשובה 3: רק שורה אחת! לא בטוחים? מוזמנים לבדוק ולתרגל ב-bigquery. למדנו הרבה מאוד עד כה. אז בואו נסכם: WHERE, AND, OR, BETWEEN, LIKE, IN, NOT IN מקווים שענינו במדריך זה על רוב שאלות ה-SQL שלכם. למדנו איך לקבל את המידע הרלוונטי לנו, במקום לקבל אלפי שורות ואפילו מיליוני שורות, קיבלנו בדיוק את מה שאנחנו צריכים. אז, מה אנחנו כבר יודעים לבצע אחרי תרגול SQL שכזה? בעיקר להוציא רשימות ולעשות עליהן מניפולציות מורכבות יותר באקסל. מה נלמד במדריך SQL הבא? במסגרת קורס SQL למתחילים, במדריך הבא נתחיל ללמוד חישובים ופונקציות שמסכמות לנו את הנתונים, כגון: MAX, MIN, SUM, COUNT, AVG. אחרי התרגול הבא, כבר נוכל להבין איך הנתונים שלנו נראים, להבין מסקנות בסיסיות עליהם וכל זה בפקודת SQL פשוטה. נשמע מעניין, נכון? מזומנים להמשיך למדריך הבא.