テーブルの行を削除します。
構文
DELETE [ optimizer_hint ] FROM table[subquery][@ dblink]
[ WHERE condition ]
[ RETURNING return_expression [, ...]
{INTO { record | variable [, ...] }
| BULK COLLECT INTO collection [, ...] } ] 説明
DELETEステートメントを使用して、指定したテーブルからWHERE条件を満たす行を削除できます。 WHERE句を指定しない場合、テーブル内のすべての行が削除されます。 ステートメントは正常に実行でき、テーブルは空になります。
TRUNCATEは、テーブルからすべての行を削除するためのより高速な方法です。 SPLプログラム内でDELETEコマンドを使用する場合にのみ、RETURNING INTO { record | variable [, ...] 句を指定できます。 DELETEコマンドの結果セットに複数の行を含めることはできません。 そうでない場合は、例外が生じます。 結果セットが空の場合、ターゲットレコードまたは変数の内容は null に設定されます。
RETURNING BULK COLLECT INTO collection [, ...] 句は、SPLプログラム内でDELETEコマンドを使用する場合にのみ指定できます。 BULK COLLECT INTO句のターゲットとして複数のcollectionを指定する場合、各collectionにスカラーフィールドを含める必要があります。 コレクションはレコードであってはなりません。 DELETEコマンドの結果セットには、0行、1行、または複数行が含まれる場合があります。 結果セットの各行に対して評価されるreturn_expressionは、最初の要素から始まるcollectionの要素になります。 collection内の既存の行が削除されます。 結果セットが空の場合、collectionは空です。
データを削除するテーブルに対するDELETE権限と、条件でデータが読み取られるテーブルに対するSELECT権限が必要です。
パラメーター
| パラメーター | 説明 |
| optimizer_hint | 実行計画を選択するために使用されるオプティマイザへのコメント埋め込みヒント。 |
| table | 既存のテーブルの名前。 名前はスキーマで修飾できます。 |
| dblink | リモートデータベースを識別するデータベースリンク名。 データベースリンクの詳細については、「CREATE database LINK」コマンドをご参照ください。 |
| condition | BOOLEAN型の値を返す値式。 削除する行を決定します。 |
| return_expression | tableに1つ以上の列を含めることができる式。 tableの列名がreturn_expressionで指定されている場合、return_expressionの評価時に列に代入される値は、削除された行の値です。 |
| record | フィールドにreturn_expressionの評価結果を割り当てるレコード。 たとえば、最初のreturn_expressionはrecordの最初のフィールドに割り当てられ、2番目のreturn_expressionはrecordの2番目のフィールドに割り当てられます。 record内のフィールドの数は式の数と一致する必要があり、フィールドは対応する式と型互換性がある必要があります。 |
| variable | return_expressionの評価結果を代入する変数です。 複数のreturn_expressionとvariableを指定した場合、最初のreturn_expressionは最初のvariableに割り当てられ、2番目のreturn_expressionは2番目のvariableに割り当てられます。 INTOキーワードに続く指定された変数の数は、RETURNINGキーワードに続く式の数と一致する必要があり、変数は対応する式と型互換である必要があります。 |
| collection | 評価されたreturn_expressionから要素が作成されるコレクション。 単一フィールドのコレクションまたはレコードタイプのコレクションを指定できます。 各コレクションが単一フィールドで構成される複数のコレクションを指定することもできます。 戻り式の数は、指定したすべてのコレクションのフィールド数と一致し、順序付けする必要があります。 各return_expressionは、対応するcollectionフィールドと型互換である必要があります。 |
| subquery | このパラメーターは、サブクエリ句を指定します。 |
例:
jobhistテーブルから従業員7900の行をすべて削除します。
jobhistから削除するWHERE empno = 7900;jobhistテーブルをクリアする:
jobhistから削除します。SELECT * FROM tの結果をオブジェクトとして取得し、オブジェクトのすべてのデータを削除します。
DELETE FROM (SELECT * FROM t);