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;
デモ データベースの次のテーブルを検討してください。
本:
価格:
各書籍の名前と対応する価格を確認したい場合、次のコマンドを実行します。
SELECT Book.name, Price.price FROM Book INNER JOIN Price ON Book.id = Price.id;
次のように返されます。
結合条件を満たした行は 3 行だけでした。
EQUI結合
EQUI 結合は、主キーと外部キーの関係に基づいて XNUMX つのテーブルを結合する方法を提供します。 例えば:
SELECT * FROM Book JOIN Price ON Book.id = Price.id;
次のように返されます。
レコードは、共通の列、つまり id 列に基づいて両方のテーブルから返されました。
自然結合
このタイプの結合は、EQUI 結合を記述する別の方法を提供します。 以下に示すように NATURAL キーワードを追加することで、前の例を改善できます。
SELECT * FROM Book NATURAL JOIN Price;
次のように返されます。
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;
これにより、次が返されます。
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;
これにより、次が返されます。
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;
これにより、次が返されます。
すべてのテーブルのすべての行が返され、一致するものが見つからなかった場合は null が返されます。
pgAdminの使用
上記のタスクは、pgAdmin で次のように実行できます。
pgAdmin 内部結合
Theta の使い方 PostgreSQL pgAdminを使用する
以下は、pgAdmin を使用して Postgres で Theta Join を使用する手順です。
ステップ 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 は、結合条件が満たされない左側のテーブルのすべての行と、NULL を含む右側のテーブルのすべての行を返します。