PostgreSQL クエリの削除 (選択から行を削除)

クエリを削除 PostgreSQL

  ステートメントの削除 in PostgreSQL テーブルから 1 つ以上のレコードを削除するために使用されます。テーブルから選択した行を削除したい場合 PostgreSQL DELETE ステートメントを WHERE 句と組み合わせることができ、それ以外の場合はすべてのレコードが削除されます。

Postgres の削除クエリ構文

DELETE ステートメントは、次の構文で定義できます。

[ WITH [ RECURSIVE ] with-query [, ...] ]
DELETE FROM [ ONLY ] table-name [ * ] [ [ AS ] alias ]
    [ USING using-list ]
    [ WHERE condition(s) | WHERE CURRENT OF cursor-name]
    [ RETURNING * | output-expression [ [ AS ] output-name] [, ...] ]

計測パラメータ

  • クエリ付き: WITH 句を使用すると、DELETE クエリで名前によって参照される XNUMX つ以上のサブクエリを参照できます。
  • テーブル名: レコードを削除するテーブルの名前。
  • alias: これはターゲットテーブルの名前の代替です。
  • using-list: 他のテーブルの列を WHERE 句で使用できるようにするテーブル式。
  • 条件): オプション。 これらは、レコードを削除するために満たさなければならない条件です。 このセクションが指定されていない場合、すべてのテーブル名のレコードが削除されます。
  • カーソル名: WHERE CURRENT OF 条件で使用されるカーソル。 このカーソルによって最後にフェッチされた行が削除されます。
  • 出力式: すべての行の削除後に DELETE ステートメントによって処理され返される式。
  • 出力名: 返された列に使用される名前。

DELETE ステートメントは行全体を削除するため、列名を指定する必要がないことに注意してください。

PostgreSQL 1 つの条件でクエリを削除する

DELETE ステートメントは、単一の条件で使用できます。 条件は WHERE 句を使用して設定します。 以下の価格表を検討してください。wing データ:

価格

PostgreSQL 1 つの条件でクエリを削除する

ID が 4 のレコードを削除しましょう。

DELETE FROM Price
WHERE id = 4;

上記のコマンドは、ID が 4 のレコードを削除します。削除が成功したかどうかを確認してみましょう。

PostgreSQL 1 つの条件でクエリを削除する

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

XNUMX つの条件を含むクエリの削除

  PostgreSQL DELETE ステートメントには 2 つの条件を指定できます。 2 つの条件は AND を使用して結合する必要があります。 operaトル。以下を使用しますwing テーブル:

価格:

PostgreSQL XNUMX つの条件を含むクエリの削除

以下の例を考えてみましょう。

DELETE FROM Price
WHERE id = 3Y
AND price = 300;

上記のコマンドでは、ID が 3、価格が 300 の行を削除しています。これでテーブルをクエリできるようになります。

SELECT * FROM Price

これは以下を返しますwing:

PostgreSQL XNUMX つの条件を含むクエリの削除

ID 3、価格 300 のレコードが削除されました。

PostgreSQL 存在条件を使用してクエリを削除する

EXISTS 条件を使用すると、DELETE をさらに複雑にすることができます。plex。 場合によっては、あるテーブルのレコードを別のテーブルのレコードに基づいて削除する必要がある場合があります。

削除を実行する場合、FROM 句では複数のテーブルのレコードを一覧表示できないことがわかりますが、EXISTS 句が非常に役立ちます。 以下のものがありますwing XNUMX つのテーブル:

本:

PostgreSQL 存在条件を使用してクエリを削除する

価格:

PostgreSQL 存在条件を使用してクエリを削除する

その後、次のコマンドを実行できますwing クエリ:

DELETE FROM Book
WHERE EXISTS
  (SELECT 1
    FROM Price
    WHERE Price.id = Book.id
    AND price < 250 );

上記のコマンドは、Book テーブルの ID と一致し、価格が 250 未満であるレコードが Price テーブルに存在する Book テーブルから削除します。

Book テーブルは次のようになります。

PostgreSQL 存在条件を使用してクエリを削除する

ID 1 のレコードが削除されました。

行を削除する方法 PostgreSQL pgAdminを使用する

Following の行を削除する手順です。 PostgreSQL pgAdminを使用して:

XNUMXつの条件で

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

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

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

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

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

行を削除 PostgreSQL

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

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

DELETE FROM Price
WHERE id = 4;

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

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

行を削除 PostgreSQL

ステップ 5) 行が削除されたかどうかを確認する

削除が成功したかどうかを確認してみましょう。

行を削除 PostgreSQL

XNUMXつの条件付き

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

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

ステップ2)

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

行を削除 PostgreSQL

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

DELETE FROM Price
WHERE id = 3
AND price = 300;

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

行を削除 PostgreSQL

ステップ5) 削除が成功したかどうかを確認してみましょう。

行を削除 PostgreSQL

EXISTS 条件の使用

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

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

ステップ2)

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

EXISTS 条件を使用して行を削除する

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

DELETE FROM Book
WHERE EXISTS
  (SELECT 1
    FROM Price
    WHERE Price.id = Book.id
    AND price < 250 );

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

EXISTS 条件を使用して行を削除する

ステップ5) 削除が成功したかどうかを確認してみましょう。

EXISTS 条件を使用して行を削除する

まとめ

  • DELETE ステートメントは、テーブルから XNUMX つ以上のレコードを削除するために使用されます。
  • テーブルから選択した行のみを削除するには、DELETE ステートメントと WHERE 句を組み合わせます。
  • WHERE 句を指定せずに DELETE 句を使用すると、テーブルからすべてのレコードが削除されます。
  • table-name パラメータを使用すると、レコードを削除するテーブルの名前を追加できます。
  • DELETE ステートメントは、WHERE 句を使用して指定された XNUMX つの条件とともに使用できます。
  • DELETE ステートメントは、WHERE 句で指定された 2 つの条件とともに使用することもできます。 2 つの条件は AND を使用して結合する必要があります。 operator。
  •   存在する 条件は、別のテーブルのレコードに基づいてテーブルからレコードを削除するのに役立ちます。

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