DELETE ステートメントを使用した表からの行の除去

表から行を除去するときは、DELETE ステートメントを使用します。

行の削除では、その行全体が除去されます。DELETE ステートメントは、行から特定の列を取り除くためのものではありません。 DELETE ステートメントが実行されると、WHERE 文節で指定された検索条件を満たす行の数に応じて、表の 0 個以上の行が削除されます。DELETE ステートメントで WHERE 文節の指定を省略すると、SQL は表からすべての行を削除します。DELETE ステートメントは次のようになります。

   DELETE FROM 表名
     WHERE 検索条件 ...

例えば、部門 D11 が別の場所に移転するとします。この場合には、次のように CORPDATA.EMPLOYEE 表内の WORKDEPT に D11 という値が入っているすべての行を削除します。

   DELETE FROM CORPDATA.EMPLOYEE
     WHERE WORKDEPT = 'D11'

WHERE 文節は、表から削除する行を SQL に指示します。SQL は、検索条件を満たすすべての行を基礎となる表から削除します。ビューから行を削除すると、基礎となる表からの行が削除されます。 WHERE 文節は省略できますが、WHERE 文節のない DELETE ステートメントでは表またはビューのすべての行が削除されるため、WHERE 文節を組み込むことが推奨されます。 表の内容とともに表定義を削除するには、DROP ステートメントを実行してください。

SQL が DELETE ステートメントの実行中にエラーを検出すると、データの削除を中止して負の SQLCODE を戻します。COMMIT(*ALL)、COMMIT(*CS)、 COMMIT(*CHG)、または COMMIT(*RR) が指定されていると、表内のどの行も削除されません (このステートメントによってすでに削除された行があれば、以前の値に戻されます)。COMMIT(*NONE) が指定されている場合は、すでに削除された行があっても、以前の値に復元されません

SQL が検索条件を満たす行を見つけることができない場合は、+100 の SQLCODE が返されます。
注: DELETE ステートメントでは、複数の行が削除される可能性があります。 削除された行の数は、 SQLCA の SQLERRD(3) に反映されます。 この値は、GET DIAGNOSTICS ステートメントの ROW_COUNT 診断項目からも使用可能です。