צירוף פנימי
צירוף טבלאות
במסדי נתונים יחסיים, הנתונים מאורגנים לעתים קרובות בטבלאות מרובות כדי למזער את היתירות ולשפר את תקינות הנתונים. גישה זו לעיצוב, המכונה נורמליזציה, תמנע חזרה על אותו מידע במקומות שונים. עם זאת, משמעות הדבר היא שמידע שימושי מתפרס לעתים קרובות על-פני טבלאות מרובות.
צירופים הם פעולות SQL חיוניות המגשרות על פער זה, ומאפשרות לך לשלב שורות משתי טבלאות או יותר ולאחזר נתונים קשורים בערכת תוצאות מאוחדת יחידה. למעשה, צירופים מאפשרים לך לבצע שאילתות במידע המחובר באופן לוגי אך מופרד פיזית. הם משיגים שילוב זה על-ידי זיהוי והתאמה של שורות בהתבסס על ערכים שנמצאו בעמודה משותפת אחת או יותר בין הטבלאות. עמודות משותפות אלה משמשות לעתים קרובות כקישור בין מפתח ראשי בטבלה אחת למפתח זר בטבלה אחרת, תוך יצירת קשרי הגומלין המוגדרים בסכימת מסד הנתונים.
הערה: מפתח ראשי הוא מזהה ייחודי עבור כל רשומה בטבלה, ומבטיח שלא יהיה ערך זהה בשתי שורות בעמודה זו. מפתח זר הוא עמודה בטבלה אחת המפנה למפתח הראשי בטבלה אחרת, וביניהם קישור שתי הטבלאות.
ישנם מספר רב של 'טעמים' של צירופים (INNER, LEFT, RIGHT, FULL OUTER, NATURAL), כל אחד מיועד לשלב טבלאות בדרכים שונות מעט. הן מספקות שליטה על השורות הכלולות בערכת התוצאות בהתבסס על הנוכחות או היעדר הערכים התואמים בטבלאות המצורפות.
צירוף פנימי
An INNER JOIN הוא אחד הסוגים הנפוצים ביותר של צירופים של SQL. הוא משלב שורות מטבלאות מרובות בהתבסס על תנאי המציין ערכים תואמים בעמודה משותפת.
בעת ביצוע INNER JOIN, רק השורות התואמות את התנאי בשתי הטבלאות נכללות בערכת התוצאות, וסינון יעיל של נתונים לא תואמים. הדבר הופך INNER JOIN לאידאלי לאחזור מידע קשור שבו חיבורים בין טבלאות מוגדרים באופן מפורש, כגון הזמנות של לקוחות או הקצאות עובדים.
SELECT orders.order_id, customers.customer_name, employees.first_name, employees.last_name
FROM sales.orders AS orders
INNER JOIN sales.customers AS customers ON orders.customer_id = customers.customer_id
INNER JOIN sales.employees AS employees ON orders.employee_id = employees.employee_id;
השאילתה שסופקה משתמשת בפעולות INNER JOIN מרובות כדי לאחזר ערכת תוצאות מאוחדת המכילה פרטים אודות orders, customersו- employees.
היא מתאימה את הטבלה בטבלה לטבלה customer_idorders המתאימה, ולטבלה customer_idcustomers בטבלה עם employee_id הטבלהorders.employee_idemployees כתוצאה מכך, השאילתה תפלט את מזהה כל הזמנה לצד שמות הלקוח והעובד המעורבים.