UNION ו- UNION ALL הם שני אופרטורי SQL החיוניים ביותר המשמשים במסד הנתונים לשילוב ערכת התוצאות ממספר טבלאות. אופרטורים אלו מאפשרים לנו להשתמש במספר שאילתות SELECT, לאחזר את התוצאות הרצויות ולאחר מכן לשלב אותן לפלט סופי . במאמר זה, אנו הולכים לראות כיצד הם שונים זה מזה. לפני ביצוע השוואה, נדון בקצרה על מפעילים אלה.
'מה זה 10 מתוך 100'
מהו מפעיל איחוד?
מפעיל איחוד ב-MySQL מאפשר לנו לשלב שתי תוצאות או יותר ממספר שאילתות SELECT לקבוצת תוצאות אחת. יש לו תכונת ברירת מחדל ל להסיר את השורות הכפולות מהשולחנות. תחביר האופרטור הזה משתמש תמיד בשם העמודה במשפט ה-SELECT הראשון כדי להיות שמות העמודות של הפלט.
MySQL האיחוד חייב לפעול לפי הכללים הבסיסיים הבאים:
- המספר והסדר של העמודות צריכים להיות זהים בכל השאילתות.
- מיקום העמודות התואמות של כל שאילתת בחירה חייב להיות בעל סוג נתונים תואם.
- שם העמודה שנבחר בשאילתות ה-SELECT השונות חייב להיות באותו סדר.
- שם העמודה של שאילתת ה-SELECT הראשונה יהיה שמות העמודות של הפלט.
הערה: עלינו לדעת שאיחוד והצטרפות שונים.
- JOIN משלב נתונים ממספר טבלאות שונות, ואילו UNION משלב נתונים ממספר טבלאות דומות.
- JOIN מוסיף את הפלט בצורה אופקית, ואילו UNION משלב את התוצאה בצורה אנכית.
הייצוג החזותי שלהלן מסביר זאת בצורה ברורה יותר:
לקריאת מידע נוסף על מפעיל האיחוד, לחץ כאן.
מה זה Union All?
האופרטור UNION ALL משלב שתי תוצאות או יותר משאילתות SELECT מרובות ומחזיר את כל הרשומות לקבוצת תוצאות אחת. זה לא מסיר את השורות הכפולות מהפלט של הצהרות SELECT.
אנו יכולים להבין זאת באמצעות הייצוג החזותי הבא.
איחוד מול מפעיל איחוד כל
טבלת ההשוואה הבאה מסבירה את ההבדלים העיקריים ביניהם בצורה מהירה:
הִתאַחֲדוּת | איחוד הכל |
---|---|
הוא משלב את ערכת התוצאות ממספר טבלאות ו מחזיר רשומות ברורות לקבוצת תוצאות אחת. | הוא משלב את ערכת התוצאות ממספר טבלאות ו מחזיר את כל הרשומות לקבוצת תוצאות אחת. |
להלן הבסיס תחביר של מפעיל UNION: בחר column_list מטבלה1 הִתאַחֲדוּת SELECT column_list מטבלה2; | להלן הבסיס תחביר של מפעיל UNION ALL: בחר column_list מטבלה1 איחוד הכל SELECT column_list מטבלה2; |
יש לו תכונת ברירת מחדל לביטול השורות הכפולות מהפלט. | אין לו תכונה לביטול השורות הכפולות מהפלט. |
שֶׁלָה הביצועים איטיים מכיוון שלוקח זמן למצוא ולאחר מכן להסיר רשומות כפולות. | שֶׁלָה הביצועים מהירים כי זה לא מבטל את השורות הכפולות. |
רוב משתמשי מסד הנתונים מעדיפים להשתמש באופרטור זה. | רוב משתמשי מסד הנתונים אינם מעדיפים להשתמש באופרטור זה. |
איחוד ואיגוד הכל דוגמה
תן לנו להבין את ההבדלים בין מפעילי Union לאיחוד כל באמצעות דוגמה. נניח שיש לנו טבלה בשם ' סטוּדֶנט 'ו' תלמיד 2 ' שמכיל את הנתונים הבאים:
שולחן: סטודנט
טבלה: סטודנט2
בעקבות משפט SQL מחזיר את ה שם מובהק של ערים משתי הטבלאות באמצעות שאילתת UNION:
SELECT City FROM student UNION SELECT City FROM student2 ORDER BY City;
לאחר ביצוע ההצהרה שלמעלה, נקבל את הפלט שלהלן מכיוון שהאופרטור האיחוד מחזיר רק את הערכים המובחנים.
בעקבות משפט SQL חוזר שם כל הערים כולל כפילויות משתי הטבלאות באמצעות השאילתה UNION ALL:
SELECT City FROM student UNION ALL SELECT City FROM student2 ORDER BY City;
לאחר ביצוע ההצהרה שלעיל, נקבל את הפלט שלהלן מכיוון שהאופרטור Union All מחזיר רשומות שלמות מבלי לבטל ערכים נפרדים.