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