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

Содержание:

Anonim

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

СОЕДИНЕНИЯ PostgreSQL используются для получения данных из более чем одной таблицы. С помощью JOIN мы можем объединить операторы SELECT и JOIN в один оператор. К оператору добавляется условие JOIN, и возвращаются все строки, соответствующие условиям.

Значения из разных таблиц объединяются на основе общих столбцов. Общий столбец в основном является первичным ключом первой таблицы и внешним ключом второй таблицы.

В этом руководстве по PostgreSQL вы узнаете:

  • Что такое соединения PostgreSQL?
  • Типы соединений
  • Внутренние соединения
    • Тета Присоединяйтесь
    • EQUI Присоединиться
    • Естественное соединение
  • Внешние соединения
    • ЛЕВОЕ НАРУЖНОЕ СОЕДИНЕНИЕ
    • ПРАВОЕ ВНЕШНЕЕ СОЕДИНЕНИЕ
    • Полное внешнее соединение
  • Использование pgAdmin
  • Внутренние соединения
    • Тета Присоединяйтесь
    • EQUI Присоединиться
    • Естественное соединение
    • INNER JOIN (простое соединение)
  • Внешние соединения
    • ЛЕВОЕ НАРУЖНОЕ СОЕДИНЕНИЕ
    • ПРАВОЕ ВНЕШНЕЕ СОЕДИНЕНИЕ
    • Полное внешнее соединение

Типы соединений

В PostgreSQL есть два типа JOIN:

  • Внутренние соединения
  • Внешнее соединение

Внутренние соединения

Есть 3 типа внутренних соединений:

  • Тета присоединиться
  • Естественное соединение
  • EQUI присоединиться

Тета Присоединяйтесь

Тета-соединение позволяет объединить две таблицы на основе условия, представленного тета. Тета-соединения могут работать со всеми операторами сравнения. В большинстве случаев тета-соединение называется внутренним соединением.

Тета-соединение - это самый основной тип JOIN. Он вернет все строки из таблиц, в которых выполнено условие JOIN.

Синтаксис:

SELECT columnsFROM table-1INNER JOIN table-2ON table-1.column = table-2.column;

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

Книга:

Цена:

Мы хотим видеть название каждой книги и соответствующую цену. Мы можем запустить следующую команду:

SELECT Book.name, Price.priceFROM BookINNER JOIN PriceON Book.id = Price.id;

Это вернет следующее:

Только 3 строки удовлетворяли условию соединения.

EQUI Присоединиться

Соединение EQUI дает нам возможность объединить две таблицы на основе отношения первичный ключ / внешний ключ. Например:

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

Это вернет следующее:

Записи были возвращены из обеих таблиц на основе общих столбцов, то есть столбца id.

Естественное соединение

Этот тип соединения предоставляет нам еще один способ написания соединения EQUI. Мы можем улучшить наш предыдущий пример, добавив ключевое слово NATURAL, как показано ниже:

SELECT *FROM BookNATURAL JOIN Price;

Это вернет следующее:

Был возвращен только один столбец идентификатора. NATURAL JOIN смог заметить, что столбец id является общим в двух таблицах. Вернули только одну.

Внешние соединения

В PostgreSQL есть три типа внешних JOIN:

  • Левое внешнее соединение.
  • Правое внешнее соединение.
  • Полное внешнее соединение

ЛЕВОЕ НАРУЖНОЕ СОЕДИНЕНИЕ

LEFT OUTER JOIN вернет все строки в таблице с левой стороны и только те строки в таблице с правой стороны, где было выполнено условие соединения.

Синтаксис:

SELECT columnsFROM table-1LEFT OUTER JOIN table-2ON table-1.column = table-2.column;

Нам нужно увидеть название каждой книги и соответствующую цену. Мы можем запустить следующую команду:

SELECT Book.name, Price.priceFROM BookLEFT JOIN PriceON Book.id = Price.id;

Это возвращает следующее:

Все 4 строки в таблице книги возвращены. Только 3 строки из таблицы цен соответствовали условию соединения. Следовательно, они были возвращены. Последняя книга не имеет соответствующей ценовой стоимости.

ПРАВОЕ ВНЕШНЕЕ СОЕДИНЕНИЕ

RIGHT OUTER JOIN возвращает все строки в таблице с правой стороны и строки в таблице с левой стороны, где было выполнено условие соединения.

Синтаксис:

SELECT columnsFROM table-1RIGHT OUTER JOIN table-2ON table-1.column = table-2.column;

Например:

SELECT Book.name, Price.priceFROM BookRIGHT JOIN PriceON Book.id = Price.id;

Это возвращает следующее:

Все строки в таблице цен возвращены. Были возвращены только те строки в таблице Book, которые удовлетворяли условию соединения. 3 - й строке не имеет значения для имени , поскольку совпадение не было найдено.

Полное внешнее соединение

Этот тип JOIN вернет все строки в таблице с левой стороны и все строки в таблице с правой стороны с нулями, если условие соединения не выполнено.

Синтаксис:

SELECT columnsFROM table-1FULL OUTER JOIN table-2ON table-1.column = table-2.column;

Например:

SELECT Book.name, Price.priceFROM BookFULL OUTER JOIN PriceON Book.id = Price.id;

Это возвращает следующее:

Были возвращены все строки из всех таблиц с нулевыми значениями, в которых не было найдено совпадений.

Использование pgAdmin

Вышеуказанные задачи могут быть выполнены в pgAdmin следующим образом:

Внутренние соединения

Тета Присоединяйтесь

Шаг 1) Войдите в свою учетную запись pgAdmin.

Шаг 2)

  1. На панели навигации слева нажмите «Базы данных».
  2. Щелкните Демо.

Шаг 3) Введите запрос в редакторе запросов:

SELECT Book.name, Price.priceFROM BookINNER JOIN PriceON Book.id = Price.id;

Шаг 4) Нажмите кнопку «Выполнить».

Он должен вернуть следующее:

EQUI Присоединиться

Шаг 1) Войдите в свою учетную запись pgAdmin.

Шаг 2)

  1. На панели навигации слева нажмите «Базы данных».
  2. Щелкните Демо.

Шаг 3) Введите запрос в редакторе запросов:

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

Шаг 4) Нажмите кнопку «Выполнить».

Он должен вернуть следующее:

Естественное соединение

Шаг 1) Войдите в свою учетную запись pgAdmin.

Шаг 2)

  1. На панели навигации слева нажмите «Базы данных».
  2. Щелкните Демо.

Шаг 3) Введите запрос в редакторе запросов:

SELECT *FROM BookNATURAL JOIN Price;

Шаг 4) Нажмите кнопку «Выполнить».

Он должен вернуть следующее:

INNER JOIN (простое соединение)

Шаг 1) Войдите в свою учетную запись pgAdmin.

Шаг 2)

  1. На панели навигации слева нажмите «Базы данных».
  2. Щелкните Демо.

Шаг 3) Введите запрос в редакторе запросов:

SELECT Book.name, Price.priceFROM BookINNER JOIN PriceON Book.id = Price.id;

Шаг 4) Нажмите кнопку «Выполнить».

Он должен вернуть следующее:

Внешние соединения

ЛЕВОЕ НАРУЖНОЕ СОЕДИНЕНИЕ

Шаг 1) Войдите в свою учетную запись pgAdmin.

Шаг 2)

  1. На панели навигации слева нажмите «Базы данных».
  2. Щелкните Демо.

Шаг 3) Введите запрос в редакторе запросов:

SELECT Book.name, Price.priceFROM BookLEFT JOIN PriceON Book.id = Price.id;

Шаг 4) Нажмите кнопку «Выполнить».

Он должен вернуть следующее:

ПРАВОЕ ВНЕШНЕЕ СОЕДИНЕНИЕ

Шаг 1) Войдите в свою учетную запись pgAdmin.

Шаг 2)

  1. На панели навигации слева нажмите «Базы данных».
  2. Щелкните Демо.

Шаг 3) Введите запрос в редакторе запросов:

SELECT Book.name, Price.priceFROM BookRIGHT JOIN PriceON Book.id = Price.id;

Шаг 4) Нажмите кнопку «Выполнить».

Он должен вернуть следующее:

Полное внешнее соединение

Шаг 1) Войдите в свою учетную запись pgAdmin.

Шаг 2)

  1. На панели навигации слева нажмите «Базы данных».
  2. Щелкните Демо.

Шаг 3) Введите запрос в редакторе запросов:

SELECT Book.name, Price.priceFROM BookFULL OUTER JOIN PriceON Book.id = Price.id;

Шаг 4) Нажмите кнопку «Выполнить».

Он должен вернуть следующее:

Резюме:

  • В PostgreSQL мы используем JOIN, когда нам нужно получить значения из более чем одной таблицы.
  • INNER JOIN - это самый простой тип JOIN. Он возвращает все записи, в которых было выполнено указанное условие JOIN.
  • LEFT OUTER JOIN возвращает все строки в левой таблице и только те строки в другой таблице, для которых было выполнено условие соединения.
  • RIGHT OUTER JOIN возвращает все строки в правой таблице и только строки в другой таблице, для которых было выполнено условие соединения.
  • Этот тип JOIN возвращает все строки в левой таблице и все строки в правой таблице с нулями, если условие соединения не выполняется.

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