Web Services שפת SQL כתבה: זהבה יעקובסון ליווי מקצועי : ארז קלר www.corner.co.il
מבוא לשפת SQL. קריאת מידע. שינוי מידע. צירופים. משפטים נוספים.
מבוא לשפת SQL SQL (Structured Query Language ) , היא שפה המשמשת לצורך עבודה עם מסדי נתונים. שפת SQL פותחה על ידי חברת IBM ואומצה כתקן הן על ידי מכון התקנים האמריקאי (ANSI -American National Standards Institute) והן על ידי ארגון התקינה הבינלאומי (ISO) . שפת SQL היא שפת שאילתות המתארת רק מה לבצע ולא כיצד לבצע. שאילתות SQL, משמשות לצורך ביצוע פעולות על מסדי נתונים. לדוגמא: יצירת טבלה חדשה, הוספת נתונים חדשים, חיקת נתונים, עידכון נתונים, מחיקת נתונים וכד'.
מבוא לשפת SQL כל מערכות מסדי נתונים המודרניים מתבססים על שפת SQL, לדוגמא: Access Oracle, ,Microsoft SQL Server וכו'. מערכות מסדי הנתונים משתמשות ב- SQL הסטנדרטית, אולם, רובן מוסיפות עליה ומרחיבות אותה. את פקודת ה SQL ניתן להפעיל בשתי צורות : עבודה אינטרקטיבית כאשר הפעולה מתבצעת על מסד הנתונים. שילוב פקודות SQL בתוך שפה מארחת (Host Languag) .
מבוא לשפת SQL שפת DML (Data Manipulation Language) שפה לטיפול בנתונים עצמם . שפת זו מאפשרת למשתמש גישה לנתונים וטיפול בהם.השפה מכילה שפת שאילתות (Query Language ). שפת DDL (Data Definition Language) שפה המשמשת לטיפול במבנה הנתונים (הוספת ומחיקת טבלאות, שדות ואינדקסים), ולקביעת הרשאות גישה לרכיבי מסד הנתונים.
מבוא לשפת SQL שפת DML (Data Manipulation Language) משפט SELECT, המשפט המוכר ביותר בקטגוריה זו, מחזיר נתונים מתוך טבלה (או מספר טבלאות). משפט INSERT מוסיף רשומות חדשות לטבלה. משפט UPDATE מעדכן נתונים ברשומות הקיימות בטבלה. משפט DELETE מוחק רשומות נתונים מטבלה.
מבוא לשפת SQL שפת DDL (Data Definition Language) משפט CREATE, יוצר פריט מבנה חדש - טבלה, שדה וכדומה. משפט DROP, מוחק פריט קיים. משפט GRANT, מעניק זכות גישה למשתמש או לקבוצת משתמשים. משפט REVOKE, מונע זכות גישה ממשתמש או מקבוצה.
X מבוא לשפת SQL כללים ראשוניים לכתיבת פקודות SQL פקודותSQL אינן רגישות לגודל האות Case Insensitive)) , אין אבחנה בין אותיות קטנות לגדולות. ניתן לכתוב משפט SQL במספר שורות. אסור לרדת שורה באמצע מילה. SELECT = select = SeLeCt SELECT ID,LastName,First From tblPersons X SEL ECT
מבוא לשפת SQL מסד נתונים לתרגול במהלך המצגת נשתמש בתוכנת Access המאפשרת ליצור מסד נתונים ולהפעיל עליו שאילתות SQL . נשתמש במסד הנתונים Northwind.mdb המגיע עם התקנת Access . מסד נתונים זה מותקן בדרך כלל בתיקיה msoffice\Office\Samples . מסד הנתונים Northwind - מכיל מידע לגבי חברה המייבאת ומייצאת מזון ייחודי מכל העולם. הטבלאות שנשתמש במסד הנתונים NorthWind : Employees - עובדים. Product – מוצרים. Categories – קטגוריות מוצרים. Orders- הזמנות. Order Details - מוצרים בהזמנה. Customers - לקוחות. Suppliers - ספקים.
מבוא לשפת SQL מסד נתונים לתרגול
מבוא לשפת SQL הוספת שאילתא למסד הנתונים פתח את ה ACCESS . פתח את מסד הנתונים northwind.mdb . לחץ על האפשרות "שאילתות" (Queries) בחר: יצירת שאילתה בתצוגת עיצוב – "עיצוב" תוצג תיבה בעלת הכותרת "הצגת טבלה" סגור תיבה זו ובחר מהסרגל תיבת SQL (פינה שמאלית עליונה) הקלד משפט SQL ישירות סגור את החלון ע"י לחיצה על x ולחץ על "כן" בהודעת השמירה תן לשאילתה שם משמעותי השאילתה תופיע ברשימת השאילתות. להפעלת השאילתא – סמן את השאילתא המבוקשת ולחץ על "פתח"
מבוא לשפת SQL. קריאת מידע. שינוי מידע. צירופים. משפטים נוספים.
קריאת מידע משפט SELECT פקודת SELECT היא הפקודה השכיחה ביותר, תפקידה לאחזר (לשלוף) נתון או קבוצת נתונים מטבלה או מטבלאות של מסד הנתונים. מבנה הפקודה : SELECT [distinct] column_name [*,column_name.] FROM table_name [WHERE condition] [GROUP by column_name ] [HAVING condition] [ORDER BY column_name] השדות המסומנים ב [] הינם אופציונליים
קריאת מידע משפט SELECT – המשך SELECT [distinct] column_name [*,column_name.] FROM table_name [WHERE condition] [GROUP by column_name ] [HAVING condition] [ORDER BY column_name] שמות העמודות אותן עומדים לאחזר ,distinct מבטל שורות זהות שמות הטבלאות מהן מאחזרים את המידע תנאי השליפה שיקבעו אילו שורות ישלפו מאפשר הקבצת שורות מאפשר הגדרת תנאי לוגי אותו יקיימו השורות המקובצות מגדיר את סדר המיון שבו תוצג התוצאה
קריאת מידע משפט SELECT – המשך בחירת עמודות מטבלה ניתן לבחור את כל הרשומות באמצעות התו * : SELECT * FROM Employees לחילופין ניתן לבחור עמודה/ות מסוימות ממסד הנתונים ע"י עריכת רשימה של העמודות הרצויות , ערכי העמודות יוחזרו לפי סדר הופעתן ברשימה כאשר באופן אוטומטי שמות העמודות יהוו כותרות עבור התוצאות המוחזרות.
קריאת מידע משפט SELECT – המשך שליפת כל הרשומות – תוצאות SELECT * FROM Employees
קריאת מידע משפט SELECT – המשך דוגמה: בחירת השמות הפרטיים של כל העובדים שבטבלת Employees: SELECT FirstName FROM Employees בחירת מספר עובד , שם פרטי ושם משפחה של כל העובדים שבטבלת Employee SELECT EmployeeId , FirstName, LastName FROM Employees
קריאת מידע משפט SELECT – המשך תוצאת שאילתא 1 : SELECT FirstName FROM Employees
קריאת מידע משפט SELECT – המשך תוצאת שאילתא 2 : SELECT EmployeeId , FirstName, LastName FROM Employees
קריאת מידע משפט SELECT – המשך בחירת top-n"" רשומות עליונות מהתוצאה שהתקבלה SELECT top 10 * FROM Products
קריאת מידע משפט SELECT – המשך פעולות אריתמטיות - שדות חישוביים. ניתן לשלב פעולות חשבוניות על הערכים המוחזרים. דוגמה: בחירת שמות המוצרים , מחירם הרגיל ומחיר לאחר תוספת 16.5% (מע"מ) SELECT ProductName, UnitPrice, UnitPrice*1.155 FROM Products
קריאת מידע משפט SELECT – המשך כינויים - שמות חלופיים לעמודות שמות העמודות בתוצאה נקבעים באופן אוטומטי ע"פ שמות השדות במסד הנתונים , במידה ורוצים להחליף שמות אילו לשמות קריאים יותר בתוצאה יש להשתמש בכינויים (Aliases) לעמודות . באם הכינוי מכיל מילה אחת נציין את השם אחרי שם העמודה באמצעות האופרטור AS. לדוגמא: בשאילתא האחרונה כותרת העמודה של המחיר החדש נקבע ל-Expr1002 , במידה ונרצה לתת לעמודה שם משמעותי נוסיף כינוי. SELECT ProductName , UnitPrice,UnitPrice*1.165 as NewUnitPrice FROM Products
קריאת מידע משפט SELECT – המשך כינויים - שמות חלופיים לעמודות – המשך באם השם החדש מכיל יותר ממילה אחת וכולל רווחים בין המילים, מגדירים את השם החדש בין סוגריים מרובעים [ ] לדוגמא: במידה והכינוי יהיה: New Unit Price SELECT ProductName , UnitPrice,UnitPrice*1.165 as [New Unit Price] FROM Products
קריאת מידע משפט SELECT – המשך כינויים - שמות חלופיים לעמודות – המשך דוגמה: SELECT ProductName, UnitPrice, UnitPrice*1.165 AS [New Unit Price] FROM Products;
קריאת מידע משפט SELECT – המשך הצגת רשומות ללא כפילות השאילתא הבאה מבקשת את מספרי הלקוח של כל ההזמנות: SELECT distinct CustomerId FROM Orders הבעיה בשאילתא זו שמספרי הלקוחות אשר ביצעו מספר הזמנות יופיעו יותר מפעם אחת. לעיתים נרצה שיופיעו בתוצאת השאילתא רקמספרי הלקוחות שביצעו הזמנה ללא כפילויות. על מנת להתמודד עם בעיית הכפילות נגדיר DISTINCT : SELECT DISTINCT CustomerId FROM Orders
קריאת מידע משפט SELECT – המשך הצגת רשומות ללא כפילות – המשך תוצאה: SELECT distinct CustomerId FROM Orders תוצאה:
קריאת מידע משפט SELECT – המשך מיון התוצאות ניתן למיין רשומות ע"י הוספת הפסוקית Order by לשאילתא ברירת מחדל יתבצע מיון בסדר עולה (ASC) למיון בסדר יורד יש להוסיף את המילה DESC . לדוגמה: בחירת שמות העובדים מטבלת Employees ממוין לפי סדר אלפא-בית של השדה FirstName בסדר עולה. SELECT EmployeeId , FirstName, LastName FROM Employees Order by FirstName
קריאת מידע משפט SELECT – המשך מיון התוצאות – המשך FROM Employees SELECT EmployeeId , FirstName, LastName Order by FirstName
קריאת מידע משפט SELECT – המשך מיון התוצאות – המשך מיון בסדר יורד : SELECT EmployeeId , FirstName, LastName FROM Employees Order by FirstName DESC
קריאת מידע משפט SELECT – המשך שימוש ב- WHERE האופרטורים האפשריים להגדרת תנאים לוגיים האם : אופרטורים השוואתיים כגון : = , > , < , <> , => , =<. אופרטורים לוגיים כגון : AND , OR , NOT - IN בדיקת תוכן עמודה מול קבוצה מסויימת. - BETWEEN בדיקת תוכן עמודה בתחום בין ערך כלשהו לבין ערך אחר כלשהו. LIKE - בדיקת מחרוזת תווים. שים לב שתאריכים ומחרוזות יכתבו בין גרשים בתנאי.
קריאת מידע משפט SELECT – המשך שימוש ב- WHERE – המשך דוגמה: בחירת כל הפרטים של כל העובדים שבטבלת Employee אשר גרים ב- London. Select * from Employees Where City='London' בחירת קוד שמות המוצרים ומספר היחידות במלאי מטבלת Products, כאשר מספר היחידות הקיים במלאי אינו עולה על 10 Select ProductId,ProductName,UnitsInStock FROM Products Where UnitsInStock<=10
קריאת מידע משפט SELECT – המשך תוצאת השאילתא: Select ProductId,ProductName,UnitsInStock FROM Products Where UnitsInStock<=10
קריאת מידע משפט SELECT – המשך שימוש באופרטור טווח בחירת שמות המוצרים ומספר היחידות במלאי מטבלת Products, אשר מספר היחידות בין 10 ל 30 : Select ProductName,UnitsInStock FROM Products Where UnitsInStock BETWEEN 10 and 30
קריאת מידע משפט SELECT – המשך שימוש באופרטור רשימה IN שימוש באופרטור IN מאפשר לבצע השוואה לרשימת ערכים , כאשר מספיק שערך אחד יתאים על מנת שהרשימה תוחזר (היחס בין ערכי הרשימה הוא של OR ). דוגמה: בחירת כל הפרטים של כל העובדים שבטבלת Employee אשר גרים בעיר - London או Seattle או Tacoma. Select * from Employees Where City in('London','Seattle','Tacoma')
קריאת מידע משפט SELECT – המשך תוצאת שאילתא : SELECT EmployeeId, FirstName, LastName,City FROM Employees WHERE City in('London','Seattle','Tacoma');
קריאת מידע משפט SELECT – המשך שימוש באופרטורים להשוואת מחרוזות * _ [ ] האופרטור LIKE מאפשר לבצע חיפוש בתוכן מחרוזות/תת מחרוזות אופרטור זה מאפשר לבצע השוואה לחלקי מילים. משמעות תו חיפוש אוסף כלשהו של תווים , יכול להכיל אפס או יותר תווים., מכונה גם Wild Card . * מייצג תו בודד כלשהו ומתאים למחרוזת בעלת תו אחד בלבד. _ מייצג תו אחד בלבד בטווח ערכים, לדוגמא [a-f] זהה ל- [abcdef] [ ] מייצג תו אחד בלבד שאינו בטווח ערכים, לדוגמא [a-f^] זהה ל [^abcdef] [^]
קריאת מידע משפט SELECT – המשך שימוש באופרטורים להשוואת מחרוזות – המשך בחירת כל הפרטים של כל העובדים שבטבלת Employee אשר שמם הפרטי מתחיל ב- A SELECT * FROM Employees Where FIRSTNAME like 'A*' לשים לב ! כאשר השאילתא מופעלת מ #C יש להחליף את הסימן * בסימן %
קריאת מידע משפט SELECT – המשך שימוש באופרטורים להשוואת מחרוזות – המשך בחירת כל הפרטים של כל העובדים שבטבלת Employee אשר שמם הפרטי מתחיל ב- A ומסתיים ב-W . SELECT * FROM Employees Where FIRSTNAME like 'A*W
קריאת מידע פונקציות סקאלריות שפת SQL כוללת בתוכנה אוסף פונקציות פנימיות הנקראות פונקציות סקאלריות, משפטSELECT יכול להכיל בתוכו פונקציה סקאלרית. הפונקציות הן : Count - ספירה של מספר מופעים. Avg - חישוב ממוצע של ערכים. Sum - חישוב סכום ערכים. Max - מציאת הערך הגבוה ביותר מבין כל הערכים. Min - מציאת הערך הנמוך ביותר מבין כל הערכים.
קריאת מידע פונקציות סקאלריות - המשך דוגמה: ספירת מספר הזמנות SELECT COUNT(OrderID)FROM ORDERS; שליפת מספר ההזמנה האחרון שבוצע : SELECT max(OrderId) FROM Orders;
מבוא לשפת SQL. קריאת מידע. שינוי מידע. צירופים. משפטים נוספים.
שינוי מידע פקודות DML-Data Manipulation Language מאפשרות גם לבצע שינויים במידע הקיים במסד הנתונים. שפת SQL מגדירה שלוש פקודות בסיסיות : INSERT הוספת קבוצת רשומות לטבלה . UPDATE עדכון רשומה. DELETE מחיקת קבוצת רשומות מטבלה .
שינוי מידע INSERT - הוספת רשומה פקודה זו מוסיפה רשומה חדשה לטבלה במסד הנתונים: INSERT INTO table_name VALUES (value1 [value2, value3,..]) הערכים חייבים להופיע לפי סדר הגדרת השדות (העמודות) בטבלה. פקודת INSERT ושם הטבלה. הערכים של הרשומה החדשה.
שינוי מידע INSERT - הוספת רשומה - המשך דוגמה: הוספת רשומה חדשה לטבלת פריטים בהזמנה, מספר ההזמנה 10248 , Details), מספר פריט 1 , מחיר יחידה 18 , כמות 10 , הנחה 10%: INSERT INTO [Order Details] VALUES (10248,1,18,10,0.10)
שינוי מידע INSERT - הוספת רשומה - המשך השאילתא להוספה טבלת ההזמנות לפני הוספת הפריט השאילתא להוספה INSERT INTO [Order Details] VALUES (10248,1,18,10,0.10) הרשומה שנוספה
שינוי מידע INSERT - הוספת רשומה – המשך לעיתים הרשומה החדשה תכיל רק חלק מהשדות. גם כאשר המידע אינו מסודר לפי סדר הופעת העמודות, יש לציין את שמות העמודות . INSERT INTO table_name (column_name1 [,column_name2,..]) VALUES (value1 [value2, value3,..])
שינוי מידע INSERT - הוספת רשומה – המשך דוגמה הוספת פריט נוסף להזמנה (שורה נוספת) שמספרה 10248 לטבלת פריטים בהזמנה (Order Details), הוספת פריט מספר 2 , מחיר יחידה 20 , כמות 5 ללא הנחה. INSERT INTO [Order Details] (OrderID, ProductID, UnitPrice, Quantity) VALUES (10248, 2, 20, 5);
שינוי מידע INSERT - הוספת רשומה – המשך הכנסת ערכי NULL ו – DEFAULT שדות בטבלה יכולים להכיל ערך, או להשאר ריקים. כאשר מזינים שדות לטבלה ומעוניינים להשאיר ערך ריק בשדה אחד או יותר ניתן להזין את העמודה בערך NULL. אפשרות אחרת היא לספק ערך ברירת מחדל DEFAULT עבור שדה. לדוגמה: הוספת פריט נוסף להזמנה (שורה נוספת) שמספרה 10248 לטבלת פריטים בהזמנה (Order Details), הוספת פריט מספר 3 , מחיר יחידה ערך ברירת מחדל, כמות 20, הנחה 10%. INSERT INTO [Order Details] VALUES (10248, 3, DEFAULT, 20, 0.10);
שינוי מידע UPDATE - עדכון רשומות באמצעות שאילתת עדכון ניתן לשנות נתונים בשדה אחד או יותר בטבלאות קיימות.העידכון הוא לצמיתות, לא ניתן לשחזר את הערכים המקוריים. שאילתת עדכון מבצעת שינויים במידע של רשומה בטבלה. לדוגמה, העלאת מחירים של מוצר מסויים, שינוי משכורת לעובדים בקבוצת תפקידים מסוימת. UPDATE table_name SET column_name = value WHERE condition פקודת UPDATE ושם הטבלה. הערכים המעודכנים. אפשרות להוסיף תנאי לעידכון
שינוי מידע UPDATE - עדכון רשומות שאילתת להעלאת מחיר של הספק Exotic Liquids (SupplierID=1) ב-10% UPDATE Products SET UnitPrice = UnitPrice*1.10 WHERE SupplierID=1 רשימת מוצרי הספק לפני הפעלת השאילתא רשימת מוצרי הספק לאחר הפעלת השאילתא.
שינוי מידע DELETE - מחיקת רשומות שאילתת מחיקה מוחקת רשומה אחת או יותר ממסד הנתונים. המחיקה היא לצמיתות. DELETE FROM table_name WHERE condition דוגמה: מחיקת כל פרטי ההזמנה שמספרה 10260 DELETE FROM [Order Details] WHERE OrderID= 10260 פקודת DELETE ושם הטבלה. הוספת תנאי למחיקה, אחרת ימחקו כל הרשומות.
שינוי מידע DELETE - מחיקת רשומות DELETE FROM [Order Details] WHERE OrderID= 10260 רשימת פרטי ההזמנה 10260 לפני הפעלת השאילתא. רשימת פרטי ההזמנה 10260 לאחר הפעלת השאילתא.
מבוא לשפת SQL. קריאת מידע. שינוי מידע. צירופים. משפטים נוספים.
צירופים נועדו לשליפת מידע ממספר טבלאות, משפטי השילוב הם: משפט INNER JOIN . CROSS JOIN. שימוש בכינויים לטבלאות. COMPOSITE JOIN.
צירופים מדוע ? JOIN לעיתים יש צורך לשלוף מידע ממספר טבלאות. דוגמה: כאשר נשלוף רשומה נגלה ש"משה כהן" גר בעיר מספר 17 . מה זו עיר מספר 17 ? האם זה מה שנרצה להציג ללקוח?
צירופים מהו ? JOIN כאשר יש צורך במידע המשולב ממספר טבלאות נעשה ביניהן פעולת JOIN . רשומות מטבלה אחת מצורפות לרשומות מטבלה אחרת בהתאם לערכים מתאימים בעמודות המקשרות בקשרי הגומלין. ישנם שני סוגי תנאים ל JOIN : שיויון ואי שיויון.
צירופים INNER JOIN שפת SQL מסוגלת לטפל גם בשאילתות המתייחסות למספר טבלאות בו זמנית , תוך ניצול הקשרים הלוגיים המוגדרים בין הטבלאות השונות. ניתן לצרף (Join) טבלאות שונות על סמך שוויון או יחס כלשהו בין הערכים של עמודות השייכות לטבלאות שונות. הצירוף מתבצע על ידי הגדרת תנאי כלשהו בין העמודות. שאילתות המאפשרות שילוב מידע ממספר טבלאות , נקראות שאילתות Join , הן שולפות מידע ממספר טבלאות תוך ניצול הקשרים הלוגיים המוגדרים בין הטבלאות השונות. הצירוף הרגיל נקרא INNER JOIN יש אפשרות לצרף כל שני שדות מספריים מאותו סוג. לדוגמה, ניתן לצרף שדה מספור אוטומטי ושדה ארוך מאחר שמדובר בסוגים דומים. עם זאת, אין אפשרות לצרף שדות מסוג יחיד עם שדות מסוג כפול.
צירופים INNER JOIN – המשך דוגמה: FROM table1 INNER JOIN table2 ON table1.field1 compopr table2.field2 פקודת INNER JOIN מכילה את החלקים הבאים: table1, - table2שמות הטבלאות שמתוכן משולבות רשומות. field1, field2 - שמות השדות המצורפים. אם אינם מספריים, על השדות להיות בעלי סוג נתונים זהה ולהכיל נתונים מאותו סוג, אך אין הם חייבים להיות בעלי שם זהה. compopr - כל אופרטור השוואה יחסי: "=", "<", ">", "<=", ">=" או "<>".
צירופים INNER JOIN – המשך דוגמה הצגת שמות המוצרים מטבלת Products על פי הקטגוריה שלהם מטבלת Categories : SELECT CategoryName, ProductName FROM Categories, Products WHERE Categories.CategoryId=Products.CategoryId; כאשר פונים לשדה המופיע בשם זהה בשתי טבלאות יש לציין את הטבלה אליה הוא שייך לפני שם השדה.
צירופים INNER JOIN – המשך דרך נוספת לכתיבת שאילתא לצירוף טבלאות ע"י השימוש ב- INNER JOIN בפסוקית FROM . דוגמה הצגת שמות המוצרים מטבלת Products לפי הקטגוריה שלהם מטבלת Categories SELECT CategoryName, ProductName FROM Categories INNER JOIN Products ON Categories.CategoryID = Products.CategoryID
צירופים JOIN CROSS - צירוף צולב צירוף צולב ( (CROSS JOINזהו צירוף של מספר טבלאות. לדוגמא נשתמש בשתי טבלאותTable1 ו-Table2. Table1 Table2 RemarksTable1 RowTable1 Table1 row1 row2 row3 row4 RemarksTable2 RowTable2 Table2 row1 row2 row3 row4
צירופים JOIN CROSS - צירוף צולב - המשך צירוף כזה אינו שימושי. בהפעלת השאילתא הבאה : SELECT * FROM TABLE1, TABLE2 נקבל את 16שורות הבאות : נראה שכל שורה מתוך Table1 הוצמדה לכל אחת מהשורות של Table2 . צירוף כזה נקרא צירוף צולב , זהו צרוף של מספר טבלאות זו בזו. צירוף כזה אינו שימושי. כאשר בוחרים משתי טבלאות או יותר מבלי להשתמש בהוראה WHERE , מתבצע צירוף קרטזי הנקרא גם מכפלה קרטזית (Cartesian product) . צירוף מסוג זה מחבר את כל השורות מכל הטבלאות המוזכרות בהוראת FROM. אם אין צורך בצירוף כזה יש להשתמש בהוראה . WHERE
צירופים JOIN CROSS - צירוף צולב - המשך שימוש בכינויים לטבלאות לכל טבלה במסד הנתונים יש שם המוגדר בעת יצירתה . ניתן לקבוע שם חלפו או כינוי ALIAS לטבלה במקום שמה האמיתי , שימושי כאשר יש שם זהה לשדה בטבלה ורוצים לכתוב את שם הטבלה בשם אחר , לדוגמא שם קצר יותר. לדוגמא: לטבלת הקטגוריות השם יהיה cat במקום Categories וטבלה המוצרים prod במקום Products : SELECT cat.CategoryName, prod.ProductName FROM Categories cat,Products prod WHERE cat.CategoryId=prod.CategoryId
צירופים JOIN CROSS - צירוף צולב - המשך ניתן לשלב בשאילתא יותר מ-2 טבלאות . דוגמה: הצגת שמות המוצרים מטבלת Products כאשר עבור כל מוצר מצוין שם הקטגוריה ושם החברה המספקת את המוצר ממוין לפי שם החברה המספקת . SELECT CategoryName, ProductName, CompanyName FROM Categories AS cat, Products AS prod, Suppliers AS sup WHERE cat.CategoryID=prod.CategoryID AND sup.SupplierID=prod.SupplierID ORDER BY CompanyName;
צירופים JOIN CROSS - צירוף צולב - המשך תוצאת השאילתא: SELECT CategoryName, ProductName, CompanyName FROM Categories AS cat, Products AS prod, Suppliers AS sup WHERE cat.CategoryID=prod.CategoryID AND sup.SupplierID=prod.SupplierID ORDER BY CompanyName;
צירופים JOIN CROSS - צירוף צולב - המשך דוגמא לשאילתא מורכבת השולפת את שמות המוצרים,מחיר מוצר,כמות, הנחה ומחיר לאחר הנחה מטבלת פריטים בהזמנות ממוין לפי מספר ההזמנה. SELECT [Order Details].OrderID, Products.ProductName, [Order Details].UnitPrice, [Order Details].Quantity, [Order Details].Discount, CCur([Order Details].[UnitPrice]*[Quantity]*(1-[Discount])/100)*100 AS TotalPrice FROM Products INNER JOIN [Order Details] ON Products.ProductID = [Order Details].ProductID ORDER BY [Order Details].OrderID; הפונקציה Ccur הופכת את המספר למטבע ( (Currency
צירופים JOIN CROSS - צירוף צולב - המשך תוצאת השאילתא: SELECT [Order Details].OrderID, Products.ProductName, [Order Details].UnitPrice, [Order Details].Quantity, [Order Details].Discount, CCur([Order Details].[UnitPrice]*[Quantity]*(1-[Discount])/100)*100 AS TotalPrice FROM Products INNER JOIN [Order Details] ON Products.ProductID = [Order Details].ProductID ORDER BY [Order Details].OrderID;
צירופים LEFT JOIN, RIGHT JOIN שילוב רשומות של טבלת מקור בעת השימוש בפסוקית FROM. FROM table1 [LEFT | RIGHT ] JOIN table2 ON table1.field1 פעולת LEFT JOIN ו- RIGHT JOIN מכילות את החלקים הבאים: table1, - table2שמות הטבלאות שמתוכן משולבות רשומות field1, field2 - שמות השדות המצורפים. על השדות להיות בעלי סוג נתונים זהה ולהכיל נתונים מאותו סוג, אך אין הם חייבים להיות בעלי שם זהה. compopr - כל אופרטור השוואה יחסי: "=", "<", ">", "<=", ">=" או "<>".
הערות השתמש בפעולת LEFT JOIN כדי ליצור צירוף חיצוני שמאלי. צירופים חיצוניים שמאליים כוללים את כל הרשומות מן הטבלה הראשונה (השמאלית) מבין שתי טבלאות, גם אם אין ערכים תואמים עבור הרשומות בטבלה השנייה (הימנית). השתמש בפעולת RIGHT JOIN כדי ליצור צירוף חיצוני ימני. צירופים חיצוניים ימניים כוללים את כל הרשומות מן הטבלה השנייה (הימנית) מבין שתי טבלאות, גם אם אין ערכים תואמים עבור הרשומות בטבלה הראשונה (השמאלית).