バージョン 4.2.5
 —  ステートメント  —

DELETE - SQL

このドキュメントでは、次のトピックについて説明します。

関連機能グループ:「データベースへのアクセスと更新

データベース管理システムインターフェイス』ドキュメントの次のセクションも参照してください。


機能

SQL DELETE ステートメントは、カーソルを使用しないでテーブル内の行を削除したり("検索済" DELETE)、カーソルが位置づけられたテーブル内の行を削除したり("位置決め" DELETE)するために使用します。

Top of page

構文説明

2 つの異なる構造が可能です。

構文 1 - 検索済 DELETE

"検索済" DELETE ステートメントは、どの SELECT ステートメントにも関連しない独立したステートメントです。 単一のステートメントで、ゼロ、1 つ、複数、またはすべての行をテーブルから削除できます。 削除される行はテーブルに適用する search-condition によって決定されます。 オプションで、テーブル名に correlation-name を割り当てることができます。

注意:
"検索済" DELETE で実際に削除された行の数は、システム変数 *ROWCOUNT(『システム変数』ドキュメントを参照)で確認できます。

一般セットの構文:

DELETE FROM table-name [(correlation-name )] [WHERE search-condition]

拡張セットの構文:

DELETE FROM table-name [(correlation-name )] [WHERE search-condition]

WITH

RR

[QUERYNO integer]
RS
CS

構文図で使用されている記号については、「構文記号」を参照してください。

構文要素の説明:

FROM table-name
FROM 節:

この節では、行を削除するテーブルを指定します。

correlation-name

オプションで、テーブル名に correlation-name を割り当てることができます。

WHEREsearch-condition
WHERE 節:

この節では、削除する行の選択条件を指定します。

WHERE 節を指定しないと、テーブル全体が削除されます。

WITH
WITH 分離レベル節:

この節は SQL 拡張セットに含まれます。

この節では、削除する行を検索するときに使用する分離レベルを明示的に指定できます。

詳細については、「NDB - SELECT - Cursor-Oriented」の「WITH - Isolation Level」(『データベース管理システムインターフェイス』ドキュメントの「Natural for DB2」)を参照してください。

QUERYNOinteger
QUERYNO 節:

この節は SQL 拡張セットに含まれます。

この節では、このステートメントの EXPLAIN 出力とトレースレコードで使用される番号を明示的に指定します。 番号は、このステートメントの情報を含む行の PLAN_TABLETQUERYNO 列として使用されます。

構文 2 - 位置決め DELETE

"位置決め" DELETE ステートメントは、常にデータベースループ内のカーソルを参照します。 したがって、位置決め DELETE ステートメントで参照されるテーブルは、対応する SELECT ステートメントで参照されるテーブルと同一のものである必要があります。そうでない場合はエラーメッセージが返されます。 位置決め DELETE を非カーソル選択で使用することはできません。

機能的に、位置決め DELETE ステートメントは "通常の" Natural DELETE ステートメントに対応します。

一般セットの構文:

DELETE FROM table-nameWHERE CURRENT OF CURSOR [(r)]

拡張セットの構文:

DELETE FROMtable-name WHERE CURRENT OF CURSOR [(r)]

FOR ROW

[:]host-variable

OF ROWSET

integer

構文図で使用されている記号については、「構文記号」を参照してください。

構文要素の説明:

FROM table-name WHERE CURRENT OF CURSOR
FROM 節:

この節では、行を削除するテーブルを指定します。

(r)
ステートメント参照:

(r) 表記を使用して、削除する行の選択に使用されたステートメントを参照します。 ステートメント参照の指定がない場合、DELETE ステートメントは、データベースレコードが選択された一番内側のアクティブな処理ループを参照します。

FOR ROW ... OF ROWSET
FOR ROW … OF ROWSET 節:

この節は SQL 拡張セットに含まれます。

位置決め SQL DELETE ステートメント用のオプションの FOR ROW ... OF ROWSET 節では、現在の行セットから削除する行を指定します。 DELETE ステートメントが関連する SELECT ステートメントで行セットの位置決めを使用し、その INTO 節に列の配列が含まれる場合にのみ指定する必要があります。「INTO 節」を参照してください。 この節を指定しない場合、現在の行セットのすべての行が削除されます。

Top of page