PostgreSQL присъединява: Вътрешен, Външен, Ляв, Десен, Естествен с примери

Съдържание:

Anonim

Какво представляват присъединяванията към PostgreSQL?

PostgreSQL JOINs се използват за извличане на данни от повече от една таблица. С JOINs е възможно да комбинираме операторите SELECT и JOIN в един оператор. Към израза се добавя условие JOIN и всички редове, които отговарят на условията, се връщат.

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

В този урок на PostgreSQL ще научите:

  • Какво представляват присъединяванията към PostgreSQL?
  • Видове присъединявания
  • Вътрешни присъединявания
    • Theta Join
    • EQUI присъединяване
    • Естествено присъединяване
  • Външни присъединявания
    • ЛЯВО ВЪНШНО ПРИСЪЕДИНЯВАНЕ
    • ДЯСНО ВЪНШНО ПРИСЪЕДИНЯВАНЕ
    • Пълно външно присъединяване
  • Използване на pgAdmin
  • Вътрешни присъединявания
    • Theta Join
    • EQUI присъединяване
    • Естествено присъединяване
    • INNER JOIN (просто присъединяване)
  • Външни присъединявания
    • ЛЯВО ВЪНШНО ПРИСЪЕДИНЯВАНЕ
    • ДЯСНО ВЪНШНО ПРИСЪЕДИНЯВАНЕ
    • Пълно външно присъединяване

Видове присъединявания

Има два типа JOIN в PostgreSQL:

  • Вътрешни присъединявания
  • Външно присъединяване

Вътрешни присъединявания

Има 3 вида вътрешни съединения:

  • Theta се присъедини
  • Естествено присъединяване
  • EQUI присъединяване

Theta Join

Theta присъединяването позволява на човек да се присъедини към две таблици въз основа на условието, което е представено от theta. Theta присъединяванията могат да работят с всички оператори за сравнение. В повечето случаи тета съединението се нарича вътрешно съединение.

Theta присъединяването е най-основният тип ПРИСЪЕДИНЯВАНЕ. Той ще върне всички редове от таблиците, където е изпълнено условието 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 е често срещана в двете таблици. Върнат е само един.

Външни присъединявания

Има три вида външни JOINs в PostgreSQL:

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

ЛЯВО ВЪНШНО ПРИСЪЕДИНЯВАНЕ

ЛЯВОТО ВЪНШНО ПРИСЪЕДИНЯВАНЕ ще върне всички редове в таблицата от лявата страна и само редовете в дясната странична таблица, където условието за присъединяване е изпълнено.

Синтаксис:

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 реда в таблицата Book са върнати. Само 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, както следва:

Вътрешни присъединявания

Theta Join

Стъпка 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 връща всички редове в лявата таблица и всички редове в дясната таблица с нули, където условието за присъединяване не е изпълнено.

Изтеглете базата данни, използвана в този урок