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) が指定されている場合は、すでに削除された行があっても、以前の値に復元されません。