このドキュメントでは、次のトピックについて説明します。
関連機能グループ:「データベースへのアクセスと更新」
『データベース管理システムインターフェイス』ドキュメントの次のセクションも参照してください。
「Natural for DB2」の「NDB - DELETE - SQL」
「Natural for SQL/DS」の「DELETE」
SQL DELETE
ステートメントは、カーソルを使用しないでテーブル内の行を削除したり("検索済" DELETE
)、カーソルが位置づけられたテーブル内の行を削除したり("位置決め" DELETE
)するために使用します。
2 つの異なる構造が可能です。
"検索済" 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 節:
この節では、削除する行の選択条件を指定します。
|
WITH |
WITH 分離レベル節:
この節は SQL 拡張セットに含まれます。 この節では、削除する行を検索するときに使用する分離レベルを明示的に指定できます。 詳細については、「NDB - SELECT - Cursor-Oriented」の「WITH - Isolation Level」(『データベース管理システムインターフェイス』ドキュメントの「Natural for DB2」)を参照してください。 |
QUERYNOinteger |
QUERYNO 節:
この節は SQL 拡張セットに含まれます。 この節では、このステートメントの |
"位置決め" DELETE
ステートメントは、常にデータベースループ内のカーソルを参照します。 したがって、位置決め DELETE
ステートメントで参照されるテーブルは、対応する SELECT
ステートメントで参照されるテーブルと同一のものである必要があります。そうでない場合はエラーメッセージが返されます。 位置決め DELETE
を非カーソル選択で使用することはできません。
機能的に、位置決め DELETE
ステートメントは "通常の" Natural DELETE
ステートメントに対応します。
一般セットの構文:
DELETE FROM table-nameWHERE CURRENT OF CURSOR [(r)]
|
拡張セットの構文:
DELETE FROM table-name WHERE CURRENT OF CURSOR [(r)]
|
FOR ROW |
[:]host-variable | OF ROWSET |
|||||
integer |
構文図で使用されている記号については、「構文記号」を参照してください。
構文要素の説明:
FROM table-name WHERE CURRENT OF CURSOR |
FROM 節:
この節では、行を削除するテーブルを指定します。 |
---|---|
(r) |
ステートメント参照:
|
FOR ROW ... OF ROWSET |
FOR ROW … OF ROWSET 節:
この節は SQL 拡張セットに含まれます。 位置決め |