SQL עם Microsoft Access
לרובנו יש על המחשב את הכלי Microsoft Access אך כמעט ולא מכירים אותו. באמצעות MS Access נוכל להבין יותר טוב כיצד אנו משתמשים ב-SQL. תוכנה זו מאפשרת לנו ליצור מסד נתונים משלנו ולבצע עליו שאילתות.
אם נכיר את כלי זה טוב יותר נוכל להבין מה היתרונות הרבים שלו. אחד היתרונות הידועים שלו היא פשוט השימוש שלו. ניתן ליצור טבלאות ושאילתות אפילו מבלי להבין מה הוא SQL.
במדריך זה נשתמש ב-MS Access 2010. נפתח את התוכנה וניפגש עם המסך הבא:
נבחר ב-Blank Database. המסך שיפתח לנו יצור טבלת ברירת מחדל בשם Table1. את טבלה זו נערוך וניצור מספר שדות: שדה Username המכיל שמות משתמשים, ושדה Phone אשר יכיל מספרי טלפון של משתמשים.
בכדי ליצור את שדה ה-Username נעשה את הדבר הבא: נלחץ על ראש הטבלת היכן שרשום "Click To Add". כעת יפתח לך תפריט עם סוגים שונים של שדות כגון: מחרוזת, מספר, וכו' הסוג של השדה שנרצה היא מחרוזת ולכן נבחר Text. הסיבה לכך היא פשוטה: שדה זה יכיל שמות משתמשים:
נעשה את אותו הדבר לגבי שדה ה-Phone. כפי שראיתם בקלות רבה הצלחנו ליצור טבלה מבלי לדעת אפילו איך עושים זאת ב-SQL. אז איך באמת היינו עושים זאת עם SQL? ב-MySQL השאילתה שלנו הייתה נראית כך:
הערה: בשדות Username ו-Phone השתמשנו בסוג Text, בד"כ לא נהוג להשתמש בסוג זה אלא ב-VARCHAR.
השדה הראשון שלנו נקרא ID ונוצר כברירת מחדל. תפקידו של שדה זה הוא ליצור מספר ייחודי לאותה הרשומה כך שנוכל להתייחס אליה בקלות רבה יותר. הערכים של אותו השדה גדלים ב-1 בכל הוספה של רשומה.
כעת ניצור מסד נתונים קצת יותר מורכב. טבלה אחת של המסד תכיל את כל המשתמשים ומספר הטלפון שלהם וטבלה שנייה תכיל את כל ההזמנות המשויכות לכל משתמש. המסד ישתמש ביחס של יחיד-לרבים (One To Many) כאשר כל הזמנה בעצם מכילה מוצר אחד (ההזמנה היא בעצם המוצר). כך שבעצם לכל משתמש יכולות להיות מספר הזמנות.
לטבלה הראשונה נקרא users, היא תיראה בדיוק כמו הטבלה שיצרנו. נעבור על השדות שהטבלה תכיל:
- id – יכיל מספר זיהוי המשויך לאותו המשתמש. כל פעם שיתווסף משתמש המספר יעלה באחד.
- username – יכיל את שם המשתמש.
- phone – יכיל את מספר הטלפון של המשתמש.
לטבלה השנייה נקרא user_orders. נעבור על השדות שהיא תכיל:
- id – יכיל מספר זיהוי השייך לאותה ההזמנה.
- user_id – שדה אשר יצביע על המשתמש אשר רכש את אותו המוצר.
- item_name – יכיל את שם המוצר אשר המשתמש הזמין.
- price – יכיל את המחיר של אותו המוצר.
את המסד הנ"ל עם הנתונים כבר ייצרנו וניתן להוריד אותו מהקישור הבא.
כעת נפתח את הקובץ שהורדנו. כפי שניתן ליראות שני הטבלאות קיימות ומלאות במידע שהוכנס מראש. כעת נראה כיצד אנו מריצים שאילתות על מסד הנתונים הנ"ל באמצעות SQL.
הערה: יש לציין כי ניתן לעשות את כל מה שאנחנו עושים באמצעות אשפים ייעודים שבאים עם MS Access מבלי לדעת אפילו את תחביר השפה.
השאילתה הראשונה שניצור תציג לנו את כמות סך ההזמנות המופיעות במסד הנתונים. נעקוב אחר השלבים הבאים ליצירת השאילתה:
- נעבור ללשונית ה-"Create" ונלחץ על "Query Design":
- בדיאלוג שיקפוץ לנו נלחץ על "Close" ונעבור לתצוגת SQL View על ידי לחיצה כפתור ה-View המופיע בחלק העליון השמאלי של המסך:
- תצוגה זו מאפשרת לנו להריץ שאילתות על מסד הנתונים באמצעות התחביר הרגיל של SQL. כעת נקליד את השאילתה שציינו ונסביר אותה:
השאילתה שלנו מורכבת מהדברים הבאים:
SELECT X From TABLE_NAME – תחביר ה-SELECT אומר לשרת ה-SQL לבחור שדה מסוים (מצוין ב-X) מהטבלה (מצוינת בשם (TABLE_NAME. לדוגמא, כאשר נרצה לשלוף שמות של משתמשים מהטבלה users זה יראה כך:
נחזור לשאילתה המקורית שלנו. שאילתה זו לא מצביעה על שדה ה-id אלא מצביעה על כמות השורות הקיימות לאותו השדה. ז"א כמה שורות של id קיימת באותה הטבלה. איך היא עושה זאת? באמצעות פונקציית ה-COUNT אשר עושה זאת. מה שבעצם קורה זה שאנו אומרים לשרת ה-SQL להצביע על מספר השורות הקיימות בטבלת ה-user_orders, סך הכול שדה ה-id הוא אחד מן השדות בטבלה ולכן בחרנו בו. אם נסתכל על התחביר, נשים לב חלק המסומן בדגש:
הפקודה AS יוצרת לנו בעצם שם/כינוי לאותו השדה החדש שיצרנו (השדה המצביע על סך המוצרים שהוזמנו). קראנו לשדה זה orders_count. אנו עושים זאת בכדי שנוכל להתייחס אליו אם נרצה. בעתיד נבין לעומק למה.
כעת כל מה שנשאר לעשות זה ללחוץ על Run ולהריץ את השאילתה:
תוצאת השאילתה שנקבל היא 12. כעת נמשיך לשאילתות קצת יותר מתקדמות. נגיד והיינו רוצים להציג את כל ההזמנות שמחירן עולה על 2000 ₪ ולסדר אותן מן הגבוהה לנמוך. כיצד נעשה זאת?
השאילתה שנצטרך לכתוב תצטרך לכלול את הדברים הבאים:
- להצביע על השדה אשר מכיל את שם המוצר ועל השדה המצביע על מחיר המוצר מתוך הטבלה user_orders. נעשה זאת על ידי שימוש בתחביר ה-SELECT ו-FROM שלמדנו.
- להשתמש בפקודת ה-WHERE אשר שולפת רשומות העונות על תנאי ספציפי.
- לסדר את התוצאות מן הגבוהה לנמוך. נעשה זאת על ידי שימוש בפקודה ORDER BY. בכדי לסדר את התוצאות מן הגבוהה לנמוך נשתמש בפקודת ה-DESC (קיצור של Descending).
לבסוף השאילתה שנכתוב תיראה כך:
ותוצאת השאילתה שלנו נראית כך:
מדריך טוב
אני לא מסכים עם הכותרת שלו.
זה לא מדריך לSQL, זה יותר איך לעבוד עם SQL.
זה אותו דבר.