
Діаграма порівняння
Основа для порівняння | Лівий зовнішній об'єкт | Праворуч | Повна зовнішня приєднання |
---|---|---|---|
Основний | Всі кортежі лівої таблиці залишаються в результаті. | Всі кортежі правої таблиці залишаються в результаті. | Всі кортежі зліва, а також з правого столу залишаються в результаті. |
Розширення NULL | Кортежі лівої таблиці, які не мають відповідного кортежу в правій таблиці, розширені за допомогою значення NULL для атрибутів правої таблиці. | Кортежі правої таблиці, які не мають відповідного кортежу в лівій таблиці, розширені за допомогою значення NULL для атрибутів лівої таблиці. | Кортежі лівої та правої таблиць, які не мають відповідних кортежів у правій та лівій таблицях, відповідно розширюються за допомогою значення NULL для атрибутів правої та лівої таблиць. |
Визначення лівого зовнішнього об'єднання
Припустимо, що у нас є “ Table_A Left Outer Join Table_B ”. Таким чином, Table_A є нашою лівою таблицею, яка відображається ліворуч від лівої зовнішньої операції приєднання, а Table_B - нашою правою таблицею.
Спочатку внутрішнє з'єднання буде застосовано до Table_A і Table_B, яке повертає весь відповідний кортеж з таблиць A і B.
Потім він поверне всі кортежі з Table_A, які не мають відповідного кортежу в Table_B. Такі, що результуючі кортежі будуть доповнені значеннями NULL для атрибутів правої таблиці.
Таким чином, результат, отриманий з лівого зовнішнього приєднання, зберігає всі кортежі з лівого столу і лише узгоджує кортежі з правої таблиці.
Давайте обговоримо ліве зовнішнє приєднання з прикладом; ми маємо дві таблиці, таблицю студентів та таблицю департаментів .

Тепер, ми будемо застосовувати ліву зовнішню приєднання, на стіл студента і департаменту.
SELECT * FROM Студент LEFT OUTER JOIN Відділ
ON Студент. Student_ID = Department.Student_ID
У запиті вище, таблиця Student є лівою таблицею, а таблиця - правою таблицею. Таким чином, згідно з лівим зовнішнім приєднанням, результат повинен мати всі кортежі з таблиці студентів, і тільки відповідні кортежі з таблиці відділу.

Визначення правого зовнішнього об'єднання
Припустимо, у нас є “ Table_A Right Outer Join Table_B ”. Таким чином, Table_A є нашою лівою таблицею, яка відображається ліворуч від операції Right Outer Join, а Table_B - наша права таблиця.
Як і в лівому зовнішньому приєднанні, спочатку внутрішнє приєднання буде застосовано до Table_A і Table_B, яке поверне весь відповідний кортеж з таблиць A і B.
Потім він поверне всі кортежі з Table_B, які не мають відповідного кортежу в Table_A. Такі, що результуючі кортежі будуть доповнені значеннями NULL для атрибутів лівої таблиці.
Таким чином, результат, отриманий з правого зовнішнього об'єднання, зберігає всі кортежі з правої таблиці і лише узгоджує кортежі з лівої таблиці.
Давайте обговоримо з нашим прикладом праворуч. вище ми маємо дві таблиці, таблицю студентів і таблицю департаментів.
Тепер ми застосуємо таблицю « Право зовнішнє приєднання до таблиці студентів» і «Департамент».
ВИБІР * ВІД ОСНОВНОГО ВСТАНОВЛЕННЯ Студентський відділ
ON Студент. Student_ID = Department.Student_ID
У запиті, наведеному вище, таблиця студентів є нашою лівою таблицею, а таблиця відділу - наша права таблиця. Відповідно до операції Right Outer Join, результат повинен включати всі кортежі з таблиці Департаменту і лише узгоджувати кортежі з таблиці студентів.

Визначення повного зовнішнього об'єднання
Припустимо, у нас є “ Table_A Повна зовнішня таблиця приєднання ”. Таким чином, Table_A є нашою лівою таблицею, оскільки вона виглядає ліворуч від операції Full Outer Join і Table_B - наша права таблиця.
Повне зовнішнє приєднання - це комбінація обох, лівого зовнішнього приєднання та праворуч . Спочатку він застосовує внутрішнє з'єднання на Table_A і Table_B для отримання відповідних кортежів з обох таблиць. Потім він розширює ті кортежі Table_A з NULL, які не мають відповідного кортежу в Table_B. Крім того, він розширює ці кортежі з Table_B з NULL, які не мають відповідного кортежу в Table_A.
Таким чином, повне зовнішнє об'єднання зберігає всі кортежі зліва, а також праворуч, разом з відповідними кортежами обох таблиць.
Давайте обговоримо FULL Outer Join з прикладом; ми маємо дві таблиці вище, таблицю студентів і таблицю департаментів .
Тепер ми застосуємо повне зовнішнє приєднання до таблиці студентів та таблиці відділу.
SELECT * Відділ FULL OUTER JOIN
ON Студент. Student_ID = Department.Student_ID
У запиті, наведеному вище, таблиця студентів є нашою лівою таблицею, а таблиця відділу - наша права таблиця. Відповідно до Full Outer Join, результат повинен включати всі кортежі з обох таблиць.

Ключові відмінності між лівим, правим і повним зовнішнім об'єднанням
- Результат лівого зовнішнього приєднання має всі кортежі лівої таблиці. Аналогічно, результат правого зовнішнього приєднання має всі кортежі правої таблиці. А результат повної зовнішньої приєднання має всі кортежі як з лівого, так і з правого столу.
- У лівому зовнішньому приєднанні кортежі лівої таблиці, які не мають відповідного кортежу в правій таблиці, розширюються значеннями Null для атрибутів правої таблиці. Протилежний випадок стосується правого зовнішнього приєднання. І в повному зовнішньому приєднанні кортежі з лівої і правої таблиць, які не мають відповідних кортежів у правій і лівій таблицях, відповідно розширюються з NULL для атрибутів правої і лівої таблиці відповідно.
Висновок:
Подбайте про позиції назв таблиць у запиті. Як позиція імені таблиці в запиті вирішує, чи буде таблиця розглядатися як ліва таблиця або права таблиця.