PostgreSQL Видове съединения: Вътрешни, Външни, Ляви, Дясни
⚡ Умно обобщение
PostgreSQL Съединенията извличат и комбинират редове от две или повече таблици, използвайки споделен ключ, и включват вътрешни съединения като theta, EQUI и natural, както и външни съединения, обхващащи леви, десни и пълни резултати.
Какво представляват присъединяванията PostgreSQL?
PostgreSQL Се присъедини към се използват за извличане на данни от повече от една таблица. С помощта на Joins е възможно да комбинираме операторите SELECT и JOIN в един оператор. Към оператора се добавя условие JOIN и се връщат всички редове, които отговарят на условията. Стойностите от различните таблици се комбинират въз основа на общи колони. Общата колона е най-често първичен ключ в първата таблица и външен ключ на втората таблица.
PostgreSQL Типове присъединяване
Има два вида присъединявания PostgreSQL:
- Вътрешни съединения
- Външни съединения
PostgreSQL Вътрешно присъединяване
Има 3 вида вътрешни съединения PostgreSQL:
- Тета присъединяване
- Естествено присъединяване
- Присъединете се към EQUI
Theta Присъединете се
Тета съединението позволява да се съединят две таблици въз основа на условието, което е представено от тита. Theta съединенията могат да работят с всички оператори за сравнение. В повечето случаи тета съединението се нарича вътрешно съединение.
Тета съединението е най-основният тип JOIN. Той ще върне всички редове от таблиците, където условието JOIN е изпълнено.
Синтаксис:
SELECT columns FROM table-1 INNER JOIN table-2 ON table-1.column = table-2.column;
Обърнете внимание на следните таблици на демонстрационната база данни:
Книга:
Цена:
Искаме да видим името на всяка книга и съответната цена. Можем да изпълним следната команда:
SELECT Book.name, Price.price FROM Book INNER JOIN Price ON Book.id = Price.id;
Това ще върне следното:
Само 3 реда отговарят на условието за свързване.
EQUI Присъединете се
Съединяването на EQUI ни предоставя начин за свързване на две таблици въз основа на връзката първичен ключ/чужд ключ. Например:
SELECT * FROM Book JOIN Price ON Book.id = Price.id;
Това ще върне следното:
Записите са върнати от двете таблици въз основа на общите колони, тоест колоната с id.
Естествено присъединяване
Този тип присъединяване ни предоставя друг начин за писане на EQUI присъединяване. Можем да подобрим нашия предишен пример, като добавим ключовата дума NATURAL, както е показано по-долу:
SELECT * FROM Book NATURAL JOIN Price;
Това ще върне следното:
Върната е само една колона за идентификатор. NATURAL JOIN успя да забележи, че колоната id е обща в двете таблици. Върнат е само един.
PostgreSQL Външно присъединяване
Има 3 вида външни съединения PostgreSQL:
- Ляво външно съединение
- Дясно външно присъединяване
- Пълно външно присъединяване
PostgreSQL Ляво външно съединение
LEFT OUTER JOIN ще върне всички редове в таблицата от лявата страна и само редовете в таблицата от дясната страна, където условието за свързване е изпълнено.
Синтаксис:
SELECT columns FROM table-1 LEFT OUTER JOIN table-2 ON table-1.column = table-2.column;
Трябва да видим името на всяка книга и съответната цена. Можем да изпълним следната команда:
SELECT Book.name, Price.price FROM Book LEFT JOIN Price ON Book.id = Price.id;
Това връща следното:
Всичките 4 реда в таблицата Book са върнати. Само 3 реда от таблицата с цени отговаряха на условието за присъединяване. Затова те бяха върнати. Последната книга няма съответна ценова стойност.
PostgreSQL Дясно външно присъединяване
RIGHT OUTER JOIN връща всички редове в таблицата от дясната страна и редове в таблицата от лявата страна, където условието за свързване е изпълнено.
Синтаксис:
SELECT columns FROM table-1 RIGHT OUTER JOIN table-2 ON table-1.column = table-2.column;
Например:
SELECT Book.name, Price.price FROM Book RIGHT JOIN Price ON Book.id = Price.id;
Това връща следното:
Всички редове в таблицата „Цена“ са върнати. Върнати са само редовете в таблицата „Регистрация“, които отговарят на условието за съединение. Третият ред няма стойност за име, тъй като не е намерено съвпадение.
Пълно външно присъединяване PostgreSQL
Този тип JOIN ще върне всички редове в таблицата от лявата страна и всички редове в таблицата от дясната страна с нули, когато условието за присъединяване не е изпълнено.
Синтаксис:
SELECT columns FROM table-1 FULL OUTER JOIN table-2 ON table-1.column = table-2.column;
Например:
SELECT Book.name, Price.price FROM Book FULL OUTER JOIN Price ON Book.id = Price.id;
Това връща следното:
Всички редове от всички таблици са върнати с нули, където не е намерено съвпадение.
Използване на pgAdmin
Горните задачи могат да бъдат изпълнени в pgAdmin, както следва. Следващите раздели разглеждат стъпка по стъпка всеки тип съединение.
pgAdmin Вътрешно присъединяване
Стъпките по-долу показват как да изпълните всеки вариант на вътрешно съединение в pgAdmin.
Как да използвате Theta Присъединете се PostgreSQL използвайки pgAdmin
По-долу са стъпките за използване на Theta Join PostgreSQL използвайки pgAdmin:
Стъпка 1) Влезте във вашия pgAdmin акаунт
Отворете pgAdmin и влезте с вашите идентификационни данни
Стъпка 2) Създайте демонстрационна база данни
- От лентата за навигация вляво щракнете върху Бази данни.
- Щракнете върху Демо.
Стъпка 3) Въведете заявката
Въведете следната заявка в редактора на заявки:
SELECT Book.name, Price.price FROM Book INNER JOIN Price ON Book.id = Price.id;
Стъпка 4) Изпълнете заявката
Щракнете върху бутона Изпълнение
Трябва да върне следното:
EQUI Присъединете се
Стъпка 1) Влезте във вашия pgAdmin акаунт.
Стъпка 2)
- От лентата за навигация вляво щракнете върху Бази данни.
- Щракнете върху Демо.
Стъпка 3) Въведете заявката в редактора на заявки:
SELECT * FROM Book JOIN Price ON Book.id = Price.id;
Стъпка 4) Щракнете върху бутона Изпълнение.
Трябва да върне следното:
Естествено присъединяване
Стъпка 1) Влезте във вашия pgAdmin акаунт.
Стъпка 2)
- От лентата за навигация вляво щракнете върху Бази данни.
- Щракнете върху Демо.
Стъпка 3) Въведете заявката в редактора на заявки:
SELECT * FROM Book NATURAL JOIN Price;
Стъпка 4) Щракнете върху бутона Изпълнение.
Трябва да върне следното:
pgAdmin Обикновено вътрешно присъединяване
Стъпка 1) Влезте във вашия pgAdmin акаунт.
Стъпка 2)
- От лентата за навигация вляво щракнете върху Бази данни.
- Щракнете върху Демо.
Стъпка 3) Въведете заявката в редактора на заявки:
SELECT Book.name, Price.price FROM Book INNER JOIN Price ON Book.id = Price.id;
Стъпка 4) Щракнете върху бутона Изпълнение.
Трябва да върне следното:
pgAdmin Външно присъединяване
След това изпълнете трите варианта на външно съединение в pgAdmin, като използвате стъпките по-долу.
Ляво външно съединение
Стъпка 1) Влезте във вашия pgAdmin акаунт.
Стъпка 2)
- От лентата за навигация вляво щракнете върху Бази данни.
- Щракнете върху Демо.
Стъпка 3) Въведете заявката в редактора на заявки:
SELECT Book.name, Price.price FROM Book LEFT JOIN Price ON Book.id = Price.id;
Стъпка 4) Щракнете върху бутона Изпълнение.
Трябва да върне следното:
Дясно външно присъединяване
Стъпка 1) Влезте във вашия pgAdmin акаунт.
Стъпка 2)
- От лентата за навигация вляво щракнете върху Бази данни.
- Щракнете върху Демо.
Стъпка 3) Въведете заявката в редактора на заявки:
SELECT Book.name, Price.price FROM Book RIGHT JOIN Price ON Book.id = Price.id;
Стъпка 4) Щракнете върху бутона Изпълнение.
Трябва да върне следното:
Пълно външно присъединяване
Стъпка 1) Влезте във вашия pgAdmin акаунт.
Стъпка 2)
- От лентата за навигация вляво щракнете върху Бази данни.
- Щракнете върху Демо.
Стъпка 3) Въведете заявката в редактора на заявки:
SELECT Book.name, Price.price FROM Book FULL OUTER JOIN Price ON Book.id = Price.id;
Стъпка 4) Щракнете върху бутона Изпълнение.
Трябва да върне следното:
Изтеглете базата данни, използвана в този урок






























