DELETEは表に存在する行を削除するSQL文である。削除対象が複数ある場合は、それらのすべてを削除する。削除対象が無い場合は、何も削除せず、エラーにもならない。DELETE文はDMLの一種であり、コミットすることで削除が確定される。更新対象がロックされている場合は、ロックが解除されるまで待つ。
DELETE FROM table
DELETE FROM schema.table
DELETE FROM table WHERE condition
DELETE FROM schema.table WHERE condition
SQL> DELETE FROM emp;
SQL> DELETE FROM company.emp;
SQL> DELETE FROM emp WHERE empno = '7369';
1行が削除されました。
SQL>
表からすべての行を削除するには、条件(WHERE句)を指定せずにDELETE文を実行する。DELETE文はDML (Data Manipulation Language) なので、ロールバックすることもできる。
SQL> DELETE FROM emp;
すべての行を削除するには TRUNCATE TABLE 文を使用することもできる。TRUNCATE TABLE文はDELETE文よりも高速に行を全件削除できるが、DDL (Deta Definition Language) 文なのでロールバックできない。
SQL> TRUNCATE TABLE emp;
自分のスキーマ内にある表の行を削除するには、とくに権限は必要ない。
削除する表が自分のスキーマ内にない場合は、削除する表に対するDELETEオブジェクト権限が必要である。
DML (Data manipulation language)