PostgreSQL Типы соединений с примерами: внутреннее, внешнее, левое, правое

Что такое соединения PostgreSQL?

PostgreSQL Играя используются для получения данных из более чем одной таблицы. Благодаря соединениям мы можем объединить операторы 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;

Рассмотрим следующие таблицы демонстрационной базы данных:

Книга:

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 строки из таблицы «Цены» соответствовали условию объединения. Поэтому их вернули. Последняя книга не имеет соответствующего ценового значения.

Правое внешнее соединение 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

Все строки таблицы цен возвращены. Были возвращены только те строки таблицы 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 Join in 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 возвращает все строки в левой таблице и все строки в правой таблице с нулевыми значениями, если условие соединения не удовлетворено.

Загрузите базу данных, используемую в этом руководстве.