Що таке приєднання PostgreSQL?
PostgreSQL JOIN використовуються для отримання даних з більш ніж однієї таблиці. За допомогою JOIN можна поєднати оператори SELECT та JOIN в єдиний оператор. У заяву додається умова JOIN, і повертаються всі рядки, що відповідають умовам.
Значення з різних таблиць комбінуються на основі загальних стовпців. Загальний стовпець здебільшого є первинним ключем першої таблиці та зовнішнім ключем другої таблиці.
У цьому посібнику PostgreSQL ви дізнаєтесь:
- Що таке приєднання PostgreSQL?
- Типи об’єднань
- Внутрішні приєднання
- Theta Join
- Приєднуйтесь до EQUI
- Природне приєднання
- Зовнішні приєднання
- ЛІВО ВНЕШНЄ ПРИЄДНАННЯ
- ПРАВИЛЬНО ВНЕШНЄ ПРИЄДНАННЯ
- Повне Зовнішнє Приєднання
- Використання pgAdmin
- Внутрішні приєднання
- Theta Join
- Приєднуйтесь до EQUI
- Природне приєднання
- ВНУТРІШНЄ ПРИЄДНАННЯ (просте приєднання)
- Зовнішні приєднання
- ЛІВО ВНЕШНЄ ПРИЄДНАННЯ
- ПРАВИЛЬНО ВНЕШНЄ ПРИЄДНАННЯ
- Повне Зовнішнє Приєднання
Типи об’єднань
У PostgreSQL є два типи JOIN:
- Внутрішні приєднання
- Зовнішнє приєднання
Внутрішні приєднання
Існує 3 типи внутрішніх з'єднань:
- Тета приєднуйтесь
- Природне приєднання
- Приєднання до EQUI
Theta Join
Тета-об’єднання дозволяє об’єднати дві таблиці на основі умови, яку представляє тета. Приєднання Theta може працювати з усіма операторами порівняння. У більшості випадків тета-об’єднання називають внутрішнім об’єднанням.
Theta приєднання - це найосновніший тип ПРИЄДНАННЯ. Він поверне всі рядки з таблиць, де виконана умова JOIN.
Синтаксис:
SELECT columnsFROM table-1INNER JOIN table-2ON table-1.column = table-2.column;
Розглянемо наступні таблиці бази даних Demo:
Книга:
Ціна:
Ми хочемо побачити назву кожної книги та відповідну ціну. Ми можемо виконати таку команду:
SELECT Book.name, Price.priceFROM BookINNER JOIN PriceON Book.id = Price.id;
Це поверне наступне:
Тільки 3 рядки задовольнили умову приєднання.
Приєднуйтесь до EQUI
Приєднання EQUI надає нам спосіб об’єднання двох таблиць на основі відносин первинного ключа / зовнішнього ключа. Наприклад:
SELECT *FROM BookJOIN Price ON Book.id = Price.id;
Це поверне наступне:
Записи були повернені з обох таблиць на основі загальних стовпців, тобто стовпця id.
Природне приєднання
Цей тип об’єднання надає нам інший спосіб написання об’єднання EQUI. Ми можемо вдосконалити наш попередній приклад, додавши ключове слово NATURAL, як показано нижче:
SELECT *FROM BookNATURAL JOIN Price;
Це поверне наступне:
Повернено лише один стовпець ідентифікатора. NATURAL JOIN вдалося відзначити, що стовпець id є загальним у двох таблицях. Повернули лише одного.
Зовнішні приєднання
У PostgreSQL є три типи зовнішніх JOIN:
- Зліва Зовнішнє приєднання.
- Правильне зовнішнє приєднання.
- Повне Зовнішнє Приєднання
ЛІВО ВНЕШНЄ ПРИЄДНАННЯ
LEFT OUTER JOIN поверне всі рядки таблиці зліва та лише ті рядки правої таблиці, де умова приєднання виконана.
Синтаксис:
SELECT columnsFROM table-1LEFT OUTER JOIN table-2ON table-1.column = table-2.column;
Нам потрібно побачити назву кожної книги та відповідну ціну. Ми можемо виконати таку команду:
SELECT Book.name, Price.priceFROM BookLEFT JOIN PriceON Book.id = Price.id;
Це повертає наступне:
Повернено всі 4 рядки таблиці Книга. Тільки 3 рядки з таблиці цін відповідали умові приєднання. Тому їх повернули. Остання книга не має відповідного значення ціни.
ПРАВИЛЬНО ВНЕШНЄ ПРИЄДНАННЯ
RIGHT OUTER JOIN повертає всі рядки таблиці з правого боку та рядки таблиці зліва, де умова приєднання виконана.
Синтаксис:
SELECT columnsFROM table-1RIGHT OUTER JOIN table-2ON table-1.column = table-2.column;
Наприклад:
SELECT Book.name, Price.priceFROM BookRIGHT JOIN PriceON Book.id = Price.id;
Це повертає наступне:
Повернено всі рядки в таблиці цін. Повернуто лише ті рядки таблиці Book, які відповідали умові об’єднання. 3- й рядок не має значення для name, оскільки збігу не знайдено.
Повне Зовнішнє Приєднання
Цей тип JOIN поверне всі рядки таблиці зліва та всі рядки таблиці праворуч із нулями, де умова приєднання не виконується.
Синтаксис:
SELECT columnsFROM table-1FULL OUTER JOIN table-2ON table-1.column = table-2.column;
Наприклад:
SELECT Book.name, Price.priceFROM BookFULL OUTER JOIN PriceON Book.id = Price.id;
Це повертає наступне:
Повернуто всі рядки з усіх таблиць із нулями, де не знайдено збігів.
Використання pgAdmin
Вищезазначені завдання можна виконати в pgAdmin наступним чином:
Внутрішні приєднання
Theta Join
Крок 1) Увійдіть до свого облікового запису pgAdmin.
Крок 2)
- На панелі навігації ліворуч клацніть Бази даних.
- Клацніть Демо.
Крок 3) Введіть запит у редакторі запитів:
SELECT Book.name, Price.priceFROM BookINNER JOIN PriceON Book.id = Price.id;
Крок 4) Натисніть кнопку Виконати.
Він повинен повернути наступне:
Приєднуйтесь до EQUI
Крок 1) Увійдіть до свого облікового запису pgAdmin.
Крок 2)
- На панелі навігації ліворуч клацніть Бази даних.
- Клацніть Демо.
Крок 3) Введіть запит у редакторі запитів:
SELECT *FROM BookJOIN Price ON Book.id = Price.id;
Крок 4) Натисніть кнопку Виконати.
Він повинен повернути наступне:
Природне приєднання
Крок 1) Увійдіть до свого облікового запису pgAdmin.
Крок 2)
- На панелі навігації ліворуч клацніть Бази даних.
- Клацніть Демо.
Крок 3) Введіть запит у редакторі запитів:
SELECT *FROM BookNATURAL JOIN Price;
Крок 4) Натисніть кнопку Виконати.
Він повинен повернути наступне:
ВНУТРІШНЄ ПРИЄДНАННЯ (просте приєднання)
Крок 1) Увійдіть до свого облікового запису pgAdmin.
Крок 2)
- На панелі навігації ліворуч клацніть Бази даних.
- Клацніть Демо.
Крок 3) Введіть запит у редакторі запитів:
SELECT Book.name, Price.priceFROM BookINNER JOIN PriceON Book.id = Price.id;
Крок 4) Натисніть кнопку Виконати.
Він повинен повернути наступне:
Зовнішні приєднання
ЛІВО ВНЕШНЄ ПРИЄДНАННЯ
Крок 1) Увійдіть до свого облікового запису pgAdmin.
Крок 2)
- На панелі навігації ліворуч клацніть Бази даних.
- Клацніть Демо.
Крок 3) Введіть запит у редакторі запитів:
SELECT Book.name, Price.priceFROM BookLEFT JOIN PriceON Book.id = Price.id;
Крок 4) Натисніть кнопку Виконати.
Він повинен повернути наступне:
ПРАВИЛЬНО ВНЕШНЄ ПРИЄДНАННЯ
Крок 1) Увійдіть до свого облікового запису pgAdmin.
Крок 2)
- На панелі навігації ліворуч клацніть Бази даних.
- Клацніть Демо.
Крок 3) Введіть запит у редакторі запитів:
SELECT Book.name, Price.priceFROM BookRIGHT JOIN PriceON Book.id = Price.id;
Крок 4) Натисніть кнопку Виконати.
Він повинен повернути наступне:
Повне Зовнішнє Приєднання
Крок 1) Увійдіть до свого облікового запису pgAdmin.
Крок 2)
- На панелі навігації ліворуч клацніть Бази даних.
- Клацніть Демо.
Крок 3) Введіть запит у редакторі запитів:
SELECT Book.name, Price.priceFROM BookFULL OUTER JOIN PriceON Book.id = Price.id;
Крок 4) Натисніть кнопку Виконати.
Він повинен повернути наступне:
Короткий зміст:
- У PostgreSQL ми використовуємо JOIN, коли нам потрібно отримати значення з більш ніж однієї таблиці.
- ВНУТРІШНЄ ПРИЄДНАННЯ - це найосновніший тип СПІЛКУВАННЯ. Він повертає всі записи, де була виконана вказана умова JOIN.
- LEFT OUTER JOIN повертає всі рядки в лівій таблиці та лише ті рядки в іншій таблиці, де виконано умову об’єднання.
- RIGHT OUTER JOIN повертає всі рядки в правій таблиці та лише рядки в іншій таблиці, де умова приєднання виконана.
- Цей тип JOIN повертає всі рядки в лівій таблиці та всі рядки в правій таблиці з нулями, де умова об'єднання не виконується.
Завантажте базу даних, що використовується у цьому посібнику