|
And, Or , Notעד כה פסוקיות WHERE, שראינו היו די פשוטות ובתור כאלה הן לא שימושיות בעולם האמיתי, שבו הצרכים שלנו מושפעים מתנאים רבים ומורכבים. SQL מספקת לנו כלים, שמאפשרים לנו להרכיב פקודות מרובות פרדיקטים. בפרט, אפשר להרכיב פסוקית WHERE מספר פרדיקטים, על ידי שרשור הפרדיקטים באמצעות האופרטורים AND, OR, ו- NOT. האופרטור AND מציין תנאים מרובים, שאותם העמודה צריכה לקיים על מנת שתוחזר למשתמש. האופרטור OR מציין מספר קבילים, כלומר על מנת שהעמודה תוחזר מספיק שתקיים רק אחד מהם (או יותר). האופרטור NOT מציין תנאי הפוך, כלומר על מנת שתוחזר השורה צריכה לא לקיים את התנאי. הדרך הטובה ביותר להבין את דרכי הפעולה של האופרטורים, היא להסתכל על הדוגמאות. תאר לך את המקרה הבא, שבו נרצה לקבל מטבלת המכירות (SALES) שורות, שבהן המוכר היה מוכר, שמספרו "101" והמחיר היה גדול מ- 100$.
תשובת מסד הנתונים תהיה:
קיבלנו תשובה זו משום שסכום הקניה ( S_AMOUNT ) היה גדול מ- 100 ומספר המוכר (E_NUM) היה שווה ל-"101". אותה שאילתא עם OR:
נקבל את התשובה הבאה:
השורה הראשונה עמדה בתנאי מפני שמספר המוכר (E_NUM )היה שווה ל- "101", למרות שמחיר הקניה (S_AMOUNT ) היה קטן מ-100. באותה צורה השורה השניה נבחרה משום שסכום הקניה היה גדול מ-100 למרות שמספר המוכר היה שונה מ - "101". אם הוחלט לחבר תנאים מרובים בעזרת AND ו- OR צריך להיזהר בעת הרכבת הפרדיקט. כמו ברוב השפות אפשר להרכיב תנאי AND ו-OR תוך שימוש בסוגריים, כשלסדר הסוגריים יש משמעות. לכן, SEX = ‘M’ AND (WEIGHT > 150 OR AGE < 35) שונה מלומר (SEX = 'M' AND WEIGHT > 150) OR AGE < 35 במקרה הראשון לא יכלנו לקבל אוביקט ממין נקבה בתשובה, ואילו במקרה השני יכלנו לקבל נקבה אם גילה היה קטן מ-35. האופרטור NOT מציין תנאי הפוך. אם נרצה לקבל את רשימת כל העובדים מלבד לים סינג ין (Lim Sing Yuen) אזי נשתמש בקטע הבא:
מסד הנתונים ישיב:
תוכן עניינים Between פרק 1 -> פרק 2 -> פרק 3 -> פרק 4 -> פרק 5 -> |