Сравнителна таблица
Основа за сравнение | Ляво Външно присъединяване | Вдясно Outer Join | Full Outer Join |
---|---|---|---|
Основен | Всички резултати от лявата таблица остават в резултата. | Всички резултати от дясната таблица остават в резултата. | Всички решетки отляво и отдясно остават в резултата. |
NULL разширение | Кортежите от лявата таблица, които нямат съответстващ кортеж в дясната таблица, се разширяват с NULL стойност за атрибутите на дясната таблица. | Корабите на дясната таблица, които нямат съвпадение в лявата таблица, се разширяват с NULL стойност за атрибутите на лявата таблица. | Кортежите от лявата и дясната таблица, които нямат съответстващи кортежи в дясната и лявата таблица, съответно се разширяват с NULL стойност за атрибутите на дясната и лявата таблици. |
Дефиниция на ляво външно присъединяване
Да предположим, че имаме „ Table_A Left Outer Join Table_B “. Така че Table_A е нашата лява таблица, тъй като тя се появява вляво от лявата Outer Join операция и Table_B е нашата дясна таблица.
Първоначално вътрешното присъединяване ще бъде приложено на Table_A и Table_B, което ще върне всички съвпадения от таблица A и B.
След това той ще върне всички кортежи от Table_A, които нямат съвпадение в Table_B. Така, че получените кортежи ще бъдат допълнени с NULL стойности за атрибутите на дясната таблица.
Следователно, резултатът, получен от лявото външно присъединяване, запазва всички кортежи от лявата маса и само съответства на кортежите от дясната таблица.
Нека обсъдим левия външен член с пример; имаме две таблици по-долу, Студентска маса и таблица на отделите .
Сега ще приложим лява външна регистрация, на масата на студентите и отделите.
SELECT * FROM Студент LEFT OUTER JOIN Отдел
ON Студент. Student_ID = Department.Student_ID
В заявката по-горе, таблицата Студент е лявата маса, а таблицата е дясната таблица. Така според Левия Външен Съединител, резултатът трябва да има всички кортежи от Ученическа таблица, и да съвпадат само кортежите от таблицата на Отдела.
Определение на дясното външно присъединяване
Да предположим, че имаме: „ Таблица_В дясната външна таблица за присъединяване_B “. Така че Table_A е нашата лява таблица, тъй като тя се появява вляво от десния Outer Join операция и Table_B е нашата дясна таблица.
Подобно на лявото външно присъединяване, първоначално вътрешното присъединяване ще бъде приложено на Table_A и Table_B, което ще върне всички съвпадения от таблица A и B.
След това ще се върнат всички кортежи от Table_B, които нямат съвпадение в Table_A. Така че получените кортежи ще бъдат допълнени с NULL стойности за атрибутите на лявата таблица.
Следователно, резултатът, получен от дясното външно присъединяване, запазва всички кортежи от дясната таблица и само съответства на кортежите от лявата маса.
Нека обсъдим правилното външно присъединяване с пример; по-горе имаме две таблици, Студентска маса и таблица на отделите.
Сега ще приложим десктопната таблица и таблица на департамента.
ИЗБЕРЕТЕ * ОТ УЧАСТЪК НА УЧАСТНИЦИТЕ ПРАВО НА УЧАСТНИК Отдел
ON Студент. Student_ID = Department.Student_ID
В заявката по-горе, Студентската таблица е нашата лява маса и таблицата от департаменти е нашата дясна таблица. Според операцията Right Right Outer Join, резултатът трябва да включва всички tuples от таблицата на отдела и само съвпадение tuples от учебна таблица.
Дефиниция на пълното външно присъединяване
Да предположим, че имаме: „ Таблица_ Пълна външна таблица за присъединяване “. Така че Table_A е нашата лява таблица, тъй като тя се появява вляво от Full Outer Join операция и Table_B е нашата дясна таблица.
Full Outer Join е комбинация от двете, Left Outer Join и Right Outer Join . Първоначално се прилага вътрешно присъединяване към Table_A и Table_B за извличане на съвпадащи кортежи от двете таблици. Тогава той разширява тези кортежи от Table_A с NULL, които нямат съвпадение в Table_B. Освен това, той разширява тези кортежи от Table_B с NULL, които нямат съвпадение в таблица_A.
Следователно Full Outer Join запазва всички куки от лявата и дясната таблица, както и съвпадащите двойки от двете таблици.
Нека обсъдим ПЪЛЕН Outer Join с пример; имаме две таблици по-горе, Студентска маса и таблица на отделите .
Сега, ние ще приложим Full Outer Join to Student table и таблицата на отдела.
ИЗБЕРЕТЕ * ОТ УЧАСТНИК ПЪЛНО ВЪНШНО СЪБИРАНЕ Отдел
ON Студент. Student_ID = Department.Student_ID
В заявката по-горе, студентската таблица е нашата лява маса, а таблицата на отдела е нашата дясна маса. Според Full Outer Join, резултатът трябва да включва всички tuples от двете таблици.
Ключови разлики между ляво, дясно и пълно външно присъединяване
- Резултатът от Left Outer Join има всички tuples на лявата маса. По същия начин резултатът от дясното външно присъединяване има всички кортежи на дясната таблица. И резултатът от Full Outer Join има всички tuples от лявата и дясната таблица.
- В ляво външно присъединяване, кортежите от лявата таблица, които нямат съвпадение в дясната таблица, се разширяват с Null стойности за атрибутите на дясната таблица. Противоположният е случаят с Right Outer Join. И в Full Outer Join, кортежите от лявата и дясната таблици, които нямат съответстващи корки в дясната и лявата таблица, съответно се разширяват с NULL за атрибутите на дясната и лявата таблица съответно.
Заключение:
Погрижете се за позициите на имената на таблиците в заявката. Тъй като позицията на името на таблицата в заявката решава дали таблицата ще се разглежда като лява или дясна таблица.