PostgreSQL 選択、挿入、更新、および削除を伴う存在の例
何が存在するのか PostgreSQL?
この PostgreSQL 存在する 演算子は、サブクエリに行が存在するかどうかをテストします。つまり、演算子はサブクエリと一緒に使用されます。サブクエリに少なくとも 1 つの行が見つかった場合、Exists 演算子が満たされたとみなされます。この操作は、SELECT、UPDATE、INSERT、および DELETE ステートメントと一緒に使用できます。
Postgres が存在するクエリ構文
の構文は次のとおりです。 PostgreSQL EXISTS ステートメント:
WHERE EXISTS (subquery);
上記の構文は、EXISTS演算子が引数としてサブクエリを取ることを示しています。サブクエリは単純に SELECTステートメント 列名や式のリストではなく、SELECT * で始まる必要があります。
PostgreSQL SELECT ステートメントとともに存在します
EXISTS 演算子を使用した SELECT ステートメントの使用方法を見てみましょう。次のテーブルがあります。
本:
価格:
次のステートメントを実行します。
SELECT * FROM Book WHERE EXISTS (SELECT * FROM Price WHERE Book.id = Price.id);
これにより、次が返されます。
上記のコマンドは、ID がサブクエリによる任意のレコードの ID と一致する Book テーブル内のすべてのレコードを返す必要があります。 一致した ID は XNUMX つだけでした。 したがって、返されたレコードは XNUMX つだけです。
PostgreSQL INSERT ステートメントとともに存在します
EXISTS演算子は、 INSERT ステートメント次の 3 つのテーブルがあります。
本:
価格:
価格2:
次に、次のステートメントを実行します。
INSERT INTO Price SELECT id, price FROM Price2 WHERE EXISTS (SELECT id FROM Book WHERE Book.id = Price2.id);
価格表は次のようになりました。
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);
価格表の価格列を更新しています。 私たちの目的は、ID を共有するアイテムの価格を同じにすることです。 5 行、つまり XNUMX 行だけが一致しました。
ただし、価格は同じ 205 であるため、更新は行われませんでした。 違いがある場合は、更新が行われます。
Postgres には DELETE ステートメントが存在します
A PostgreSQL DELETE ステートメントでは EXISTS 演算子を使用できます。次に例を示します。
DELETE FROM Price WHERE EXISTS (SELECT * FROM Price2 WHERE Price.id = Price2.id);
価格表は次のようになりました。
ID が 5 の行が削除されました。
PostgreSQL pgAdmin を使用した Exists ステートメント
ここで、pgAdmin を使用してこれらのアクションをどのように実行できるかを見てみましょう。
Exists クエリの使用方法 PostgreSQL pgAdminを使用したSELECT文付き
Exists クエリを使用する手順は次のとおりです。 PostgreSQL pgAdmin を使用した SELECT ステートメント:
ステップ 1) pgAdmin アカウントにログインします。
pgAdmin を開き、資格情報を使用してアカウントにログインします。
ステップ 2) デモ データベースを作成する
- 左側のナビゲーション バーで、[データベース] をクリックします。
- 「デモ」をクリックします。
ステップ 3) クエリを入力します。
クエリ エディターに次のクエリを入力します。
SELECT * FROM Book WHERE EXISTS (SELECT * FROM Price WHERE Book.id = Price.id);
ステップ 4) クエリを実行する
「実行」ボタンをクリックします
次のような結果が返されます。
INSERT文あり
pgAdmin を使用して同じことを実行するには、次の手順を実行します。
ステップ1) pgAdmin アカウントにログインします。
ステップ2)
- 左側のナビゲーション バーで、[データベース] をクリックします。
- 「デモ」をクリックします。
ステップ3) クエリ エディターにクエリを入力します。
INSERT INTO Price SELECT id, price FROM Price2 WHERE EXISTS (SELECT id FROM Book WHERE Book.id = Price2.id);
ステップ4) 「実行」ボタンをクリックします。
価格表は次のようになります。
UPDATE文あり
pgAdmin を使用して同じことを実行するには、次の手順を実行します。
ステップ1) pgAdmin アカウントにログインします。
ステップ2)
- 左側のナビゲーション バーで、[データベース] をクリックします。
- 「デモ」をクリックします。
ステップ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) 「実行」ボタンをクリックします。
価格表は次のようになります。
DELETE文あり
pgAdmin を使用して同じことを実行するには、次の手順を実行します。
ステップ1) pgAdmin アカウントにログインします。
ステップ2)
- 左側のナビゲーション バーで、[データベース] をクリックします。
- 「デモ」をクリックします。
ステップ3) クエリ エディターにクエリを入力します。
DELETE FROM Price WHERE EXISTS (SELECT * FROM Price2 WHERE Price.id = Price2.id);
ステップ4) 「実行」ボタンをクリックします。
価格表は次のようになります。
まとめ
- EXISTS 演算子は、サブクエリ内に行が存在するかどうかをテストします。
- これはサブクエリとともに使用され、サブクエリが少なくとも XNUMX 行を返したときに満たされたと言われます。
- これは、SELECT、UPDATE、INSERT、および DELETE ステートメントと一緒に使用されます。