PostgreSQL Типы соединений: внутреннее, внешнее, левое, правое
⚡ Умное резюме
PostgreSQL Объединение (Join) извлекает и объединяет строки из двух или более таблиц, используя общий ключ, и включает в себя внутренние объединения, такие как theta, EQUI и natural, а также внешние объединения, охватывающие левые, правые и полные результаты.

Что такое соединения PostgreSQL?
PostgreSQL Играя Операторы JOIN используются для извлечения данных из нескольких таблиц. JOIN позволяет объединить операторы 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;
Рассмотрим следующие таблицы демонстрационной базы данных:
Книга:
Цена:
Мы хотим видеть название каждой книги и соответствующую цену. Мы можем запустить следующую команду:
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 Join in 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) Нажмите кнопку «Выполнить».
Он должен вернуть следующее:
Загрузите базу данных, используемую в этом руководстве.





























