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

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

וִידֵאוֹ: הבדל בין חיבור פנימי לחיבור חיצוני

וִידֵאוֹ: הבדל בין חיבור פנימי לחיבור חיצוני
וִידֵאוֹ: Испания выбираем авто (4К) Tesla рулит? 2024, יולי
Anonim

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

Inner join ו-Oter join הן שתיים משיטות ההצטרפות של SQL המשמשות בעיבוד שאילתות עבור מסדי נתונים. הם שייכים למשפחת סעיפי ההצטרפות (שניים אחרים הם חיבורי שמאל וימין). עם זאת, קיים הצטרפות עצמית שניתן להשתמש בה עבור מצבים מיוחדים. המטרה של Join היא לשלב שדות באמצעות הערכים המשותפים לשתי הטבלאות. צירופים אלה משלבים רשומות ממספר טבלאות במסד נתונים. זה יוצר ערכות שנוצרו, אותן ניתן לשמור כטבלה אחרת.

מהו התחברות פנימית?

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

מהו Outer Join?

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

מה ההבדל בין Inner Join ל-Oter Join?

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

מוּמלָץ: