PostgreSQL Типи з’єднань із прикладами: внутрішній, зовнішній, лівий, правий
Що таке приєднання PostgreSQL?
PostgreSQL з'єднання використовуються для отримання даних з кількох таблиць. За допомогою Joins ми можемо об’єднати оператори SELECT і JOIN в один оператор. До оператора додається умова JOIN, і повертаються всі рядки, які відповідають умовам. Значення з різних таблиць об’єднуються на основі спільних стовпців. Загальний стовпець переважно є первинним ключем у першій таблиці та зовнішнім ключем у другій таблиці.
PostgreSQL Типи з'єднань
Існує два типи об’єднань PostgreSQL:
- Внутрішні об'єднання
- Зовнішні об'єднання
PostgreSQL Внутрішнє з'єднання
Існує 3 типи внутрішніх з’єднань PostgreSQL:
- Тета-приєднання
- Природне приєднання
- Приєднатися до EQUI
Тета приєднатися
Тета-з'єднання дозволяє об'єднати дві таблиці на основі умови, яка представлена тета. Тета-об'єднання можуть працювати з усіма операторами порівняння. У більшості випадків тета-з'єднання називають внутрішнім з'єднанням.
Тета-об'єднання є основним типом JOIN. Він поверне всі рядки з таблиць, де виконується умова JOIN.
Синтаксис:
SELECT columns FROM table-1 INNER JOIN table-2 ON table-1.column = table-2.column;
Розглянемо наступні таблиці бази даних Demo:
Книга:
Ціна:
Ми хочемо бачити назву кожної книги та відповідну ціну. Ми можемо виконати таку команду:
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 є загальним у двох таблицях. Повернули лише одну.
Зовнішнє об'єднання Postgres
Існує 3 типи зовнішніх з’єднань PostgreSQL:
- Зліва Зовнішнє приєднання
- Правильне зовнішнє приєднання
- Повне Зовнішнє Приєднання
Ліве зовнішнє об’єднання Postgres
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 рядки з таблиці Price відповідали умові об’єднання. Тому їх повернули. Остання книга не має відповідного цінового значення.
Праве зовнішнє об'єднання Postgres
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;
Це повертає наступне:
Повернено всі рядки в таблиці Price. Було повернуто лише ті рядки в таблиці Book, які відповідали умові об’єднання. 3rd рядок не має значення для імені, оскільки відповідності не знайдено.
Повне зовнішнє приєднання 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
Як використовувати Theta Приєднуйтесь PostgreSQL за допомогою pgAdmin
Нижче наведено кроки для використання Theta Join у Postgres за допомогою 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
Зліва Зовнішнє приєднання
Крок 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) Натисніть кнопку Виконати.
Він повинен повернути наступне:
Підсумки
- In PostgreSQL, ми використовуємо JOIN, коли нам потрібно отримати значення з кількох таблиць.
- INNER JOIN — найпростіший тип JOIN. Він повертає всі записи, у яких було виконано задану умову JOIN.
- LEFT OUTER JOIN повертає всі рядки в лівій таблиці та лише ті рядки в іншій таблиці, де умова об’єднання була задоволена.
- RIGHT OUTER JOIN повертає всі рядки в правій таблиці та лише ті рядки в іншій таблиці, де умова об’єднання була задоволена.
- Цей тип JOIN повертає всі рядки в лівій таблиці та всі рядки в правій таблиці з нулями, якщо умова об’єднання не виконується.
Завантажте базу даних, яка використовується в цьому посібнику