PostgreSQL 選択、挿入、更新、および削除を伴う存在の例

何が存在するのか PostgreSQL?

この PostgreSQL 存在する 演算子は、サブクエリに行が存在するかどうかをテストします。つまり、演算子はサブクエリと一緒に使用されます。サブクエリに少なくとも 1 つの行が見つかった場合、Exists 演算子が満たされたとみなされます。この操作は、SELECT、UPDATE、INSERT、および DELETE ステートメントと一緒に使用できます。

Postgres が存在するクエリ構文

の構文は次のとおりです。 PostgreSQL EXISTS ステートメント:

WHERE EXISTS (subquery);

上記の構文は、EXISTS演算子が引数としてサブクエリを取ることを示しています。サブクエリは単純に SELECTステートメント 列名や式のリストではなく、SELECT * で始まる必要があります。

PostgreSQL SELECT ステートメントとともに存在します

EXISTS 演算子を使用した SELECT ステートメントの使用方法を見てみましょう。次のテーブルがあります。

本:

PostgreSQL SELECT ステートメントとともに存在します

価格:

PostgreSQL SELECT ステートメントとともに存在します

次のステートメントを実行します。

SELECT *
FROM Book
WHERE EXISTS (SELECT *
              FROM Price
              WHERE Book.id = Price.id);

これにより、次が返されます。

PostgreSQL SELECT ステートメントとともに存在します

上記のコマンドは、ID がサブクエリによる任意のレコードの ID と一致する Book テーブル内のすべてのレコードを返す必要があります。 一致した ID は XNUMX つだけでした。 したがって、返されたレコードは XNUMX つだけです。

PostgreSQL INSERT ステートメントとともに存在します

EXISTS演算子は、 INSERT ステートメント次の 3 つのテーブルがあります。

本:

PostgreSQL INSERT ステートメントとともに存在します

価格:

PostgreSQL INSERT ステートメントとともに存在します

価格2:

PostgreSQL INSERT ステートメントとともに存在します

次に、次のステートメントを実行します。

INSERT INTO Price
SELECT id, price
FROM Price2
WHERE EXISTS (SELECT id
              FROM Book
              WHERE Book.id = Price2.id);

価格表は次のようになりました。

PostgreSQL INSERT ステートメントとともに存在します

Price5 という名前のテーブル内の ID が 2 の行が一致しました。 このレコードはその後、Price テーブルに挿入されました。

Postgres は UPDATE ステートメントで存在します

UPDATE ステートメントでは EXISTS 演算子を使用できます。

次のクエリを実行します。

UPDATE Price
SET price = (SELECT price
              FROM Price2
              WHERE Price2.id = Price.id)
WHERE EXISTS (SELECT id, price
FROM Price2
WHERE Price2.id = Price.id);

Postgres は UPDATE ステートメントで存在します

価格表の価格列を更新しています。 私たちの目的は、ID を共有するアイテムの価格を同じにすることです。 5 行、つまり XNUMX 行だけが一致しました。

ただし、価格は同じ 205 であるため、更新は行われませんでした。 違いがある場合は、更新が行われます。

Postgres には DELETE ステートメントが存在します

A PostgreSQL DELETE ステートメントでは EXISTS 演算子を使用できます。次に例を示します。

DELETE FROM Price
WHERE EXISTS (SELECT *
              FROM Price2
              WHERE Price.id = Price2.id);

価格表は次のようになりました。

Postgres には DELETE ステートメントが存在します

ID が 5 の行が削除されました。

PostgreSQL pgAdmin を使用した Exists ステートメント

ここで、pgAdmin を使用してこれらのアクションをどのように実行できるかを見てみましょう。

Exists クエリの使用方法 PostgreSQL pgAdminを使用したSELECT文付き

Exists クエリを使用する手順は次のとおりです。 PostgreSQL pgAdmin を使用した SELECT ステートメント:

ステップ 1) pgAdmin アカウントにログインします。

pgAdmin を開き、資格情報を使用してアカウントにログインします。

ステップ 2) デモ データベースを作成する

  1. 左側のナビゲーション バーで、[データベース] をクリックします。
  2. 「デモ」をクリックします。

PostgreSQL pgAdmin を使用した Exists ステートメント

ステップ 3) クエリを入力します。

クエリ エディターに次のクエリを入力します。

SELECT *
FROM Book
WHERE EXISTS (SELECT *
              FROM Price
              WHERE Book.id = Price.id);

ステップ 4) クエリを実行する

「実行」ボタンをクリックします

PostgreSQL pgAdmin を使用した Exists ステートメント

次のような結果が返されます。

PostgreSQL pgAdmin を使用した Exists ステートメント

INSERT文あり

pgAdmin を使用して同じことを実行するには、次の手順を実行します。

ステップ1) pgAdmin アカウントにログインします。

ステップ2)

  1. 左側のナビゲーション バーで、[データベース] をクリックします。
  2. 「デモ」をクリックします。

ステートメントが存在します PostgreSQL pgAdminを使用する

ステップ3) クエリ エディターにクエリを入力します。

INSERT INTO Price
SELECT id, price
FROM Price2
WHERE EXISTS (SELECT id
              FROM Book
              WHERE Book.id = Price2.id);

ステップ4) 「実行」ボタンをクリックします。

ステートメントが存在します PostgreSQL pgAdminを使用する

価格表は次のようになります。

ステートメントが存在します PostgreSQL pgAdminを使用する

UPDATE文あり

pgAdmin を使用して同じことを実行するには、次の手順を実行します。

ステップ1) pgAdmin アカウントにログインします。

ステップ2)

  1. 左側のナビゲーション バーで、[データベース] をクリックします。
  2. 「デモ」をクリックします。

ステートメントが存在します PostgreSQL pgAdminを使用する

ステップ3) クエリ エディターにクエリを入力します。

UPDATE Price
SET price = (SELECT price
              FROM Price2
              WHERE Price2.id = Price.id)
WHERE EXISTS (SELECT id, price
FROM Price2
WHERE Price2.id = Price.id);

ステップ4) 「実行」ボタンをクリックします。

PostgreSQL pgAdmin を使用した Exists ステートメント

価格表は次のようになります。

PostgreSQL pgAdmin を使用した Exists ステートメント

DELETE文あり

pgAdmin を使用して同じことを実行するには、次の手順を実行します。

ステップ1) pgAdmin アカウントにログインします。

ステップ2)

  1. 左側のナビゲーション バーで、[データベース] をクリックします。
  2. 「デモ」をクリックします。

PostgreSQL pgAdmin を使用した Exists ステートメント

ステップ3) クエリ エディターにクエリを入力します。

DELETE FROM Price
WHERE EXISTS (SELECT *
              FROM Price2
              WHERE Price.id = Price2.id);

ステップ4) 「実行」ボタンをクリックします。

PostgreSQL pgAdmin を使用した Exists ステートメント

価格表は次のようになります。

PostgreSQL pgAdmin を使用した Exists ステートメント

まとめ

  • EXISTS 演算子は、サブクエリ内に行が存在するかどうかをテストします。
  • これはサブクエリとともに使用され、サブクエリが少なくとも XNUMX 行を返したときに満たされたと言われます。
  • これは、SELECT、UPDATE、INSERT、および DELETE ステートメントと一緒に使用されます。

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