DELETE テーブルの行を削除するSQL文

DELETEは表に存在する行を削除するSQL文である。削除対象が複数ある場合は、それらのすべてを削除する。削除対象が無い場合は、何も削除せず、エラーにもならない。DELETE文はDMLの一種であり、コミットすることで削除が確定される。更新対象がロックされている場合は、ロックが解除されるまで待つ。

構文

DELETE FROM table
DELETE FROM schema.table
DELETE FROM table WHERE condition
DELETE FROM schema.table WHERE condition
table
削除対象のテーブル(表)名を指定する。
SQL> DELETE FROM emp;
schema
削除対象のテーブルが存在するスキーマ名を指定する。削除対象のテーブルが自分のスキーマ内にある場合は、スキーマ名の指定を省略できる。
SQL> DELETE FROM company.emp;
condition
削除する行の条件を指定する。条件の指定を省略した場合は、すべての行が削除される。条件に当てはまる行が無かった場合は、何も削除されず、エラーにもならない。
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に必要な権限

自分のスキーマ内にある表の行を削除するには、とくに権限は必要ない。

削除する表が自分のスキーマ内にない場合は、削除する表に対するDELETEオブジェクト権限が必要である。

SQLの分類

DML (Data manipulation language)

関連SQL