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:

Книга:

PostgreSQL Тета приєднатися

Ціна:

PostgreSQL Тета приєднатися

Ми хочемо бачити назву кожної книги та відповідну ціну. Ми можемо виконати таку команду:

SELECT Book.name, Price.price 
FROM Book 
INNER JOIN Price 
ON Book.id = Price.id;   

Це поверне наступне:

PostgreSQL Тета приєднатися

Лише 3 рядки задовольняли умову об’єднання.

EQUI Приєднуйтесь

Об’єднання EQUI надає нам спосіб об’єднання двох таблиць на основі зв’язку первинний/зовнішній ключ. Наприклад:

SELECT *
FROM Book 
JOIN Price ON Book.id = Price.id;

Це поверне наступне:

PostgreSQL EQUI Приєднуйтесь

Записи повернуто з обох таблиць на основі загальних стовпців, тобто стовпця id.

Природне приєднання

Цей тип об’єднання надає нам інший спосіб написання об’єднання EQUI. Ми можемо покращити наш попередній приклад, додавши ключове слово NATURAL, як показано нижче:

SELECT *
FROM Book
NATURAL JOIN Price;

Це поверне наступне:

PostgreSQL Природне приєднання

Повернено лише один стовпець ідентифікатора. 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;   

Це повертає наступне:

Ліве зовнішнє об’єднання Postgres

Повернено всі 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;

Це повертає наступне:

Праве зовнішнє об'єднання Postgres

Повернено всі рядки в таблиці 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;

Це повертає наступне:

Повне зовнішнє об'єднання Postgres

Повернено всі рядки з усіх таблиць із нулями, де не було знайдено збігів.

Використання pgAdmin

Зазначені вище завдання можна виконати в pgAdmin наступним чином:

Внутрішнє приєднання pgAdmin

Як використовувати Theta Приєднуйтесь PostgreSQL за допомогою pgAdmin

Нижче наведено кроки для використання Theta Join у Postgres за допомогою pgAdmin:

Крок 1) Увійдіть у свій обліковий запис pgAdmin

Відкрийте pgAdmin і увійдіть, використовуючи свої облікові дані

Крок 2) Створіть демонстраційну базу даних

  1. На панелі навігації ліворуч натисніть Бази даних.
  2. Натисніть Демо.

Внутрішнє приєднання pgAdmin

Крок 3) Введіть запит

Введіть наведений нижче запит у редакторі запитів:

SELECT Book.name, Price.price 
FROM Book 
INNER JOIN Price 
ON Book.id = Price.id;   

Крок 4) Виконайте запит

Натисніть кнопку Виконати

Внутрішнє приєднання pgAdmin

Він повинен повернути наступне:

Внутрішнє приєднання pgAdmin

EQUI Приєднуйтесь

Крок 1) Увійдіть у свій обліковий запис pgAdmin.

Крок 2)

  1. На панелі навігації ліворуч натисніть Бази даних.
  2. Натисніть Демо.

pgAdmin EQUI Приєднатися

Крок 3) Введіть запит у редакторі запитів:

SELECT *
FROM Book 
JOIN Price ON Book.id = Price.id;

Крок 4) Натисніть кнопку Виконати.

pgAdmin EQUI Приєднатися

Він повинен повернути наступне:

pgAdmin EQUI Приєднатися

Природне приєднання

Крок 1) Увійдіть у свій обліковий запис pgAdmin.

Крок 2)

  1. На панелі навігації ліворуч натисніть Бази даних.
  2. Натисніть Демо.

pgAdmin Природне приєднання

Крок 3) Введіть запит у редакторі запитів:

SELECT *
FROM Book 
NATURAL JOIN Price;

Крок 4) Натисніть кнопку Виконати.

pgAdmin Природне приєднання

Він повинен повернути наступне:

pgAdmin Природне приєднання

pgAdmin Просте внутрішнє об’єднання

Крок 1) Увійдіть у свій обліковий запис pgAdmin.

Крок 2)

  1. На панелі навігації ліворуч натисніть Бази даних.
  2. Натисніть Демо.

pgAdmin Просте внутрішнє об’єднання

Крок 3) Введіть запит у редакторі запитів:

SELECT Book.name, Price.price 
FROM Book 
INNER JOIN Price 
ON Book.id = Price.id;   

Крок 4) Натисніть кнопку Виконати.

pgAdmin Просте внутрішнє об’єднання

Він повинен повернути наступне:

pgAdmin Просте внутрішнє об’єднання

Зовнішнє приєднання pgAdmin

Зліва Зовнішнє приєднання

Крок 1) Увійдіть у свій обліковий запис pgAdmin.

Крок 2)

  1. На панелі навігації ліворуч натисніть Бази даних.
  2. Натисніть Демо.

pgAdmin Ліве зовнішнє об’єднання

Крок 3) Введіть запит у редакторі запитів:

SELECT Book.name, Price.price 
FROM Book   
LEFT JOIN Price 
ON Book.id = Price.id;   

Крок 4) Натисніть кнопку Виконати.

pgAdmin Ліве зовнішнє об’єднання

Він повинен повернути наступне:

pgAdmin Ліве зовнішнє об’єднання

Правильне зовнішнє приєднання

Крок 1) Увійдіть у свій обліковий запис pgAdmin.

Крок 2)

  1. На панелі навігації ліворуч натисніть Бази даних.
  2. Натисніть Демо.

pgAdmin Праве зовнішнє приєднання

Крок 3) Введіть запит у редакторі запитів:

SELECT Book.name, Price.price 
FROM Book
RIGHT JOIN Price 
ON Book.id = Price.id;

Крок 4) Натисніть кнопку Виконати.

pgAdmin Праве зовнішнє приєднання

Він повинен повернути наступне:

pgAdmin Праве зовнішнє приєднання

Повне Зовнішнє Приєднання

Крок 1) Увійдіть у свій обліковий запис pgAdmin.

Крок 2)

  1. На панелі навігації ліворуч натисніть Бази даних.
  2. Натисніть Демо.

pgAdmin Повне зовнішнє приєднання

Крок 3) Введіть запит у редакторі запитів:

SELECT Book.name, Price.price 
FROM Book
FULL OUTER JOIN Price 
ON Book.id = Price.id;

Крок 4) Натисніть кнопку Виконати.

pgAdmin Повне зовнішнє приєднання

Він повинен повернути наступне:

pgAdmin Повне зовнішнє приєднання

Підсумки

  • In PostgreSQL, ми використовуємо JOIN, коли нам потрібно отримати значення з кількох таблиць.
  • INNER JOIN — найпростіший тип JOIN. Він повертає всі записи, у яких було виконано задану умову JOIN.
  • LEFT OUTER JOIN повертає всі рядки в лівій таблиці та лише ті рядки в іншій таблиці, де умова об’єднання була задоволена.
  • RIGHT OUTER JOIN повертає всі рядки в правій таблиці та лише ті рядки в іншій таблиці, де умова об’єднання була задоволена.
  • Цей тип JOIN повертає всі рядки в лівій таблиці та всі рядки в правій таблиці з нулями, якщо умова об’єднання не виконується.

Завантажте базу даних, яка використовується в цьому посібнику