Препоръчано, 2024

Избор На Редактора

Разлика между ляво, дясно и пълно външно присъединяване

По-рано обсъдихме разликите между Inner Join и Outer Join, където прегледахме видовете Outer Join. Външното присъединяване е този, който запазва кортежите в резултата, който би бил загубен по време на операцията за присъединяване. В тази статия; ще обсъдим разликите между видовете Outer Join. Има три вида външно присъединяване; Ляво външно присъединяване, дясно външно присъединяване и пълно външно присъединяване. Лявото, дясното и пълното външно присъединяване се различават по своя план за изпълнение и получените резултати. Можем да пропуснем външна дума от ляво, дясно и пълно външно присъединяване. Нека разгледаме разликите между ляво, дясно и пълно външно присъединяване с помощта на таблицата за сравнение, показана по-долу.

Сравнителна таблица

Основа за сравнениеЛяво Външно присъединяванеВдясно Outer JoinFull 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

В заявката по-горе, таблицата Студент е лявата маса, а таблицата е дясната таблица. Така според Левия Външен Съединител, резултатът трябва да има всички кортежи от Ученическа таблица, и да съвпадат само кортежите от таблицата на Отдела.

Спазвайте резултата, получен от лявото външно присъединяване; той има всички кортежи от таблицата на учениците, заедно със съвпадащите кортежи от двете таблици на ученика и отдела. Ученикът на Джими, Джоузеф Хари от студентската маса, не присъстваше в таблицата на Департамента. Следователно стойностите на атрибутите на таблицата на Департамента за Джими, Джоузеф Хари са разширени до NULL.

Определение на дясното външно присъединяване

Да предположим, че имаме: „ Таблица_В дясната външна таблица за присъединяване_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 от учебна таблица.

Наблюдавайте резултата, получен от дясното външно присъединяване; тя има всички кортежи от таблицата на отдела заедно със съвпадащите кортежи от таблицата за ученици и департаменти. Student_ID 10536 и 00954 от таблица на отдела не присъстват в таблицата на студентите. Следователно стойността на атрибута Name за Student_ID 10536 и 00954 се разширява до NULL.

Дефиниция на пълното външно присъединяване

Да предположим, че имаме: „ Таблица_ Пълна външна таблица за присъединяване “. Така че 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 от двете таблици.

Наблюдавайте резултата, получен от пълното външно присъединяване; той съдържа всички кортежи от таблицата на студентите и департаментите, заедно със съвпадащите кортежи от таблицата Ученик и отдел. Ученикът на Джими, Джоузеф Хари, т.е. съответно 10026, 02256, 56362, от таблицата на студентите, не присъстваше в таблицата на отдела. Следователно стойностите на атрибутите на таблицата на отдела за Джими, Джоузеф Хари са разширени до NULL . Student_ID 10536 и 00954, от таблицата на отдела, не присъстват в колона Student_ID на таблицата на студентите. Следователно стойността на атрибута на атрибута Name за Student_ID 10536 и 00954 се разширява до NULL .

Ключови разлики между ляво, дясно и пълно външно присъединяване

  1. Резултатът от Left Outer Join има всички tuples на лявата маса. По същия начин резултатът от дясното външно присъединяване има всички кортежи на дясната таблица. И резултатът от Full Outer Join има всички tuples от лявата и дясната таблица.
  2. В ляво външно присъединяване, кортежите от лявата таблица, които нямат съвпадение в дясната таблица, се разширяват с Null стойности за атрибутите на дясната таблица. Противоположният е случаят с Right Outer Join. И в Full Outer Join, кортежите от лявата и дясната таблици, които нямат съответстващи корки в дясната и лявата таблица, съответно се разширяват с NULL за атрибутите на дясната и лявата таблица съответно.

Заключение:

Погрижете се за позициите на имената на таблиците в заявката. Тъй като позицията на името на таблицата в заявката решава дали таблицата ще се разглежда като лява или дясна таблица.

Top