PostgreSQL 結合タイプと例: 内部、外部、左、右

結合とは PostgreSQL?

PostgreSQL ジョイン 複数のテーブルからデータを取得するために使用されます。 結合を使用すると、SELECT ステートメントと JOIN ステートメントを XNUMX つのステートメントに結合することができます。 JOIN 条件がステートメントに追加され、条件を満たすすべての行が返されます。 さまざまなテーブルの値が共通の列に基づいて結合されます。 共通列のほとんどは、最初のテーブルの主キーと XNUMX 番目のテーブルの外部キーです。

PostgreSQL 結合の種類

結合には 2 種類あります PostgreSQL:

  • 内部結合
  • 外部結合

PostgreSQL 内部結合

内部結合には 3 種類あります PostgreSQL:

  • シータ参加
  • 自然結合
  • EQUI結合

シータ結合

シータ結合を使用すると、シータで表される条件に基づいて 2 つのテーブルを結合できます。シータ結合はすべての比較演算子で機能します。ほとんどの場合、シータ結合は内部結合と呼ばれます。

シータ結合は、最も基本的なタイプの 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 結合は、主キーと外部キーの関係に基づいて XNUMX つのテーブルを結合する方法を提供します。 例えば:

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

次のように返されます。

PostgreSQL EQUI結合

レコードは、共通の列、つまり id 列に基づいて両方のテーブルから返されました。

自然結合

このタイプの結合は、EQUI 結合を記述する別の方法を提供します。 以下に示すように NATURAL キーワードを追加することで、前の例を改善できます。

SELECT *
FROM Book
NATURAL JOIN Price;

次のように返されます。

PostgreSQL 自然結合

ID 列が XNUMX つだけ返されました。 NATURAL JOIN では、id 列が XNUMX つのテーブルで共通であることがわかりました。 返品されたのはXNUMX枚だけでした。

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 左外部結合

Book テーブルの 4 行すべてが返されました。 Price テーブルの 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の右外部結合

Price テーブルのすべての行が返されました。 Book テーブル内の結合条件を満たす行のみが返されました。 3rd 一致するものが見つからなかったため、行には名前の値がありません。

完全外部結合 PostgreSQL

このタイプの JOIN は、結合条件が満たされない場合、左側のテーブルのすべての行と右側のテーブルのすべての行を null で返します。

構文:

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 の完全外部結合

すべてのテーブルのすべての行が返され、一致するものが見つからなかった場合は null が返されます。

pgAdminの使用

上記のタスクは、pgAdmin で次のように実行できます。

pgAdmin 内部結合

Theta の使い方 PostgreSQL pgAdminを使用する

以下は、pgAdmin を使用して Postgres で Theta Join を使用する手順です。

ステップ 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 は、結合条件が満たされない左側のテーブルのすべての行と、NULL を含む右側のテーブルのすべての行を返します。

このチュートリアルで使用するデータベースをダウンロードする