פרק 6: להשתעשע עם בסיסי נתונים מקוונים:אקססבסיסי נתונים SeQueL :IIבסיסי נתונים יחסיים, בעגה מקצועית, הם "מנוהלים" (managed). זה אומר שצורה כלשהי של תוכנה משמשת ליצירה, עיבוד, שמירה, ושאילתות על בסיס הנתונים. הם קוראים לחבילות תוכנה זו מערכות שליטה בבסיס נתונים יחסי (relational database management systems), או RDBMS , אל תבהלו - זה סתם אויר. זה כמו של Microsoft Word קראו פעם a textual processing modification system, או שקראו לשמפו: a scientifically formulated hair therapy system. אתם בסך הכל צריכים לדעת באיזו חבילת תוכנה של בסיסי נתונים אתם משתמשים לניהול בסיס הנתונים שלכם-- Microsoft Access הוא אחד היישומים הפופולריים ביותר עבור Windows 95/98 , כמובן, ונתמקד בו תחילה. למה Access, שהוא מוצר שעובד אך ורק בסביבת חלונות? הרי רבים משרתי הרשת רצים אך ורק בסביבת יוניקס (Unix), שבו אין שום דרך קלה לגשת (access) לבסיס הנתונים של אקסס, זו נראית כבחירה הנוגדת את ההגיון. מצד שני, מבחינה של נגישות, המציאות היא שלרבים מהקוראים קיים בסיס הנתונים במבנה של אקסס והם רוצים לתרגל שאילתות מבוססות Perl בסביבת חלונות. אקסס הוא גם דרך נוחה להכרת בסיסי נתונים יחסים. במאמר הבא, כשנתמקד בבסיסי נתונים מבוססי יוניקס, MySQL התאבון לידע שלכם יירגע. לא משנה באיזו תוכנת בסיסי נתונים תבחרו, סביר וכדאי שתתמוך ב SQL -structured query language (שפת שאילתות מובנת). אתם יכול לבטא SQL כ"sequel" אם אתם רוצים, אבל אין שום כלל רשמי. SQL היא שמגדירה את התחביר והדקדוק, בעצם זוהי מעין שפת תכנות קטנה, שאיתה תוכל לבנות שאילתות על בסיס הנתונים. המאמר שלנו אינו המקום המתאים לקורס שלם בתכנות SQL, אבל תצטרכו לדעת איך לבנות פקודות SQL. בסופו של דבר, תעביר פקודות אלו מסקריפט ה Perl שלכם לבסיס הנתונים. קורס מבוסס אינטרנט טוב ב SQL הואJames Hoffman's introduction to Structured Query Language שיקח אתכם מעבר למבוא הפשוט ל SQL שיוצג כאן. הפקודה העיקרית של SQL שתשתמשו בה למשיכת מידע מתוך בסיס הנתונים היא הפקודה select שבצורה גסה נראית כך: SELECT fields_to_return FROM table_name WHERE field_to_test condition איחזור של שורה מתוך בסיס הנתונים billing:
תוך שימוש בידע שלנו על מבנה פקודה ב SQL נוכל לתרגם את הבקשות שעסקנו בהם בעבר לשאילתות SQL תקפות: "בבקשה מנה את שמות כל הלקוחות וכתובות הדואר האלקטרוני שלהם" ;SELECT ClientName,ClientEmail FROM billing "בבקשה מנה את שמות כל הלקוחות שחויבו בלפחות 500$" SELECT ClientName FROM billing WHERE Total>=500 "בבקשה מנה את שמות כל הלקוחות וכתובות הדואר האלקטרוני שלהם שעדין לא שילמו" SELECT ClientName,ClientEmail FROM billing WHERE Paid=No בגלל שזהו בסיס נתונים יחסי, נוכל גם לבנות פקודות SQL קצת יותר מסובכות שיקשרו מידע בין שתי הטבלאות, billing & invoices. "בבקשה מנה את שמות כל הלקוחות שלא שילמו שעבורם עבדתי לפחות 10 שעות" SELECT billing.ClientName FROM billing,invoices WHERE invoices.Hours>=10 AND billing.Invoice=invoices.Invoice "בבקשה מנה את שמות כל הלקוחות וכתובות הדואר האלקטרוני שלהם שמהם גביתי לפחות 70$ לשעה" SELECT billing.ClientName,billing.ClientEmail FROM billing,invoices WHERE invoices.Rate>=70 AND billing.Invoice=invoices.Invoice זהי רמת התחכום המקסימלית שעליו יגיעו שאילתות הSQL שלנו במאמר זה, מספיק כדי להדגים שאילתות מתוך Perl. מקורות נוספים על SQL, המפורטים בסוף מאמר זה, יכולים לספק לך מבט פנימי טוב יותר של העולם המוזר והמשוגע של Structured Query Language. מבוא
לבסיסי נתונים
|