PostgreSQLとは何ですか?
EXISTS演算子は、サブクエリに行が存在するかどうかをテストします。 これは、演算子がサブクエリとともに使用されることを意味します。 Exists演算子は、サブクエリで少なくとも1つの行が見つかったときに満たされたと言われます。 この操作は、SELECT、UPDATE、INSERTおよびDELETE文とともに使用できます。
このPostgreSQLチュートリアルでは、次のことを学びます:
- 構文
- SELECT文を使用
- INSERT文を使用
- UPDATE文を使用
- DELETE文を使用
- pgAdminを使用
構文
ここではpostgresql exists文の構文は次のとおりです:
WHERE EXISTS (subquery);
上記の構文は、EXISTS演算子がサブクエリである引数を取ることを示しています。 サブクエリは、列名または式のリストではなく、SELECT*で始まるSELECTステートメントです。
With SELECT文
EXISTS演算子を使用してSELECT文を使用する方法を見てみましょう。 私たちは次の表を持っています:
本:
価格:
次のステートメントを実行します:
SELECT *FROM BookWHERE EXISTS (SELECT * FROM Price WHERE Book.id = Price.id);
これにより、次のものが返されます:
上記のコマンドは、サブクエリによるレコードのidと一致するIdを持つBookテーブル内のすべてのレコードを返す必要があります。 一致したのは1つのidだけでした。 したがって、1つのレコードのみが返されました。
INSERT文
では、INSERT文でEXISTS演算子を使用できます。 以下の3つの表があります:
本:
価格:
価格2:
次に、次のステートメントを実行できます:
INSERT INTO PriceSELECT id, priceFROM Price2WHERE EXISTS (SELECT id FROM Book WHERE Book.id = Price2.id);
価格表は次のとおりです:
Price2という名前のテーブル内のidが5の行が一致しました。 その後、このレコードが価格表に挿入されました。
UPDATE文
では、UPDATE文でEXISTS演算子を使用できます。
次のクエリを実行します:
UPDATE PriceSET price = (SELECT price FROM Price2 WHERE Price2.id = Price.id)WHERE EXISTS (SELECT id, priceFROM Price2WHERE Price2.id = Price.id);
価格表の価格列を更新しています。 私たちの目的は、idを共有するアイテムの価格を同じにすることです。 一致したのは1つの行、つまり5行だけでした。
しかし、価格は等しい、つまり205であるため、更新は行われませんでした。 違いがあった場合は、更新が行われていたでしょう。
WITH DELETE文
PostgreSQLのDELETE文では、EXISTS演算子を使用できます。 ここに例があります:
DELETE FROM PriceWHERE EXISTS (SELECT * FROM Price2 WHERE Price.id = Price2.id);
価格表は次のとおりです:
idが5の行が削除されました。
とpgAdmin
ここで、これらのアクションがpgAdminを使用してどのように実行できるかを見てみましょう。
WITH SELECT Statement
pgAdminを使用して同じことを行うには、次の操作を行います。
ステップ1)pgAdminアカウントにログインします。
2)
- 左クリックしたデータベースのナビゲーションバーから。
- デモをクリックします。
ステップ3)クエリエディタでクエリを入力します:
SELECT *FROM BookWHERE EXISTS (SELECT * FROM Price WHERE Book.id = Price.id);
ステップ4)実行ボタンをクリックします。
次のものを返す必要があります:
WITH INSERT Statement
pgAdminを使用して同じことを行うには、次のようにします。
ステップ1)pgAdminアカウントにログインします。
ステップ2)
- 左クリックしたデータベースのナビゲーションバーから。
- デモをクリックします。
ステップ3)クエリエディタでクエリを入力します: ステップ4)Executeボタンをクリックします。
価格表は次のようになります:
UPDATEステートメントを使用して
pgAdminを使用して同じことを行うには、次の手順を実行します。
ステップ1)pgAdminアカウントにログインします。
2)
- 左クリックしたデータベースのナビゲーションバーから。
- デモをクリックします。
ステップ3)クエリエディタでクエリを入力します:
UPDATE PriceSET price = (SELECT price FROM Price2 WHERE Price2.id = Price.id)WHERE EXISTS (SELECT id, priceFROM Price2WHERE Price2.id = Price.id);
ステップ4)実行ボタンをクリックします。
価格表は次のようになります:
DELETEステートメントを使用して
pgAdminを使用して同じことを行うには、次の操作を行います。
ステップ1)pgAdminアカウントにログインします。
2)
- 左クリックしたデータベースのナビゲーションバーから。
- デモをクリックします。
ステップ3)クエリエディタでクエリを入力します:
DELETE FROM PriceWHERE EXISTS (SELECT * FROM Price2 WHERE Price.id = Price2.id);
ステップ4)実行ボタンをクリックします。
価格表は次のようになります:
概要
- EXISTS演算子は、サブクエリに行が存在するかどうかをテストします。
- サブクエリで使用され、サブクエリが少なくとも一つの行を返すときに満たされていると言われています。
- SELECT、UPDATE、INSERT、およびDELETE文と一緒に使用されます。
このチュートリアルで使用するデータベースをダウンロード