הבדל בין הצטרפות פנימית וחיצונית הצטרף

Anonim

פנים הצטרף לעומת החיצוני הצטרף

להצטרף פנימה ו להצטרף החיצוני הן של SQL שיטות ההצטרפות המשמשים לעיבוד שאילתות עבור מסדי נתונים. הם שייכים למשפחה של להצטרף סעיפים (שני אחרים להיות שמאל וימין מצטרף). עם זאת, יש הצטרפות עצמית אשר ניתן להשתמש בהם עבור מצבים מיוחדים. מטרת ההצטרפות היא לשלב שדות תוך שימוש בערכים המשותפים לשני הטבלאות. חיבורים אלה משלבים רשומות מטבלאות מרובות במסד נתונים. זה יוצר ערכות תוצאה, אשר ניתן לשמור כמו שולחן נוסף.

-> ->

מה זה הצטרף?

הנפוצה ביותר SQL הצטרף המבצע הוא הצטרף הפנימי. זה יכול להיחשב כסוג ברירת המחדל של להצטרף בשימוש ביישומים. להצטרף הפנימי להשתמש להצטרף פרדיקייט לשלב שני שולחנות. בהנחה ששני הטבלאות הן A ו- B, אזי ההשוואה בין השורות תשוות שורות של A ו- B כדי לברר את כל הזוגות המספקים את המקור. ערכי עמודה של כל השורות מרוצים של טבלאות A ו- B משולבים כדי ליצור את התוצאה. זה יכול להיות הסתכל כמו הראשון לוקח את הצלב להצטרף (מוצר קרטזית) של כל הרשומות ולאחר מכן החזרת רק את הרשומות המספקות את הצטרפות- predicate. עם זאת, במציאות, מוצר קרטזית לא מחושב כי זה מאוד לא יעיל. הצטרפות להצטרף או להצטרף למיזוג הצטרף במקום זאת.

-> ->

מהו החיצוני הצטרף

בניגוד, הצטרפות פנימית, הצטרפות חיצונית שומרת את כל הרשומות גם אם היא לא מצליחה למצוא רשומות תואמות. משמעות הדבר היא שהצטרף החיצוני זקוק לרשומה כדי למצוא רשומה תואמת שתופיע בתוצאה. במקום זאת, הוא יחזיר את כל הרשומות, אבל רשומות ללא תחרות יהיו ערכי null. ההצטרפות החיצונית מחולקת לשלוש קטגוריות משנה. הם עזבו להצטרף החיצוני, להצטרף החיצוני הנכון להצטרף החיצוני מלא. הבחנה זו מבוססת על הטבלה (טבלה שמאלית, טבלה ימנית או שתי טבלאות) בשורה נשמרת כאשר רשומות לא תואמות. שמאל מצטרף החיצוני (הידוע גם פשוט להצטרף שמאל) שומרת את כל הרשומות של הטבלה השמאלית. כלומר, גם אם מספר רשומות ההתאמה הוא אפס, אז זה יהיה עדיין רשומות בטבלה התוצאה, אבל יהיו ערכי null עבור כל העמודות של B. במילים אחרות, כל הערכים מהטבלה השמאלית מוחזרים עם ערכים תואמים מימין טבלה (או ערכי null ללא תחרות). אם ערכים משורות מרובות מהטבלה השמאלית מותאמים בשורה אחת מהטבלה הימנית, השורה בטבלה הימנית תחזור על עצמה כנדרש. נכון להצטרף החיצוני הוא די דומה שמאל להצטרף החיצוני, אבל הטיפול בטבלאות הוא נערץ. פירוש הדבר שהתוצאה תהיה לכל השורות של הטבלה הנכונה לפחות פעם אחת עם ערכי טבלה שמאלה (וערכי null לערכים ימניים ללא תחרות). הצטרפות חיצונית מלאה היא מקיפה יותר משמאל ומימין מצטרף החיצוני. התוצאה היא שילוב האפקט של החלת החיצוני השמאלי והימני יחד.

-> ->

מה ההבדל בין הצטרפות פנימית וחיצונית להצטרף?

Inner Join אינו שומר את השורות ללא תחרות בתוצאה, אך ההצטרפות החיצונית תשמור את כל הרשומות מטבלה אחת לפחות (תלוי באיזה חיבור חיצוני נעשה שימוש). אז, את ההתנהגות של אין מידע קיים על שורות ללא תחרות בטבלה התוצאה היא לא רצויה, אתה צריך תמיד להשתמש באחד החיצוני מצטרף (במקום להצטרף הפנימי). הצטרפות פנימית לא יכולה לייצר תוצאה אם ​​לא נמצאו התאמות. אבל ההצטרפות החיצונית תמיד תייצר טבלה, אפילו ללא שורות תואמות. הצטרפות פנימית תמיד תחזיר טבלאות עם ערכים (אם יוחזרו). אבל ההצטרפות החיצונית עלולה לגרום לטבלאות עם ערכי null.