DELETEステートメント

DELETEステートメントは、対象とするテーブルのデータ行(レコード)を削除することのできる、 SQLにおけるデータ操作言語 (DML)ステートメントの1つです。
「DELETE」に続いて更新するテーブル名を指定します。
その後、テーブル内の全レコードを一括削除する場合を除き、通常はWHERE句にて削除条件を記述し、 削除対象レコードを指定します。

ただし、テーブル内のレコードを一括削除する場合は、「DELETE」文ではなく、 「TRUNCATE」文を使用した方がパフォーマンスが良いです。
※「TRUNCATE」は、テーブルごと削除してから再作成するのでDELETE文よりも高速です。
ただし、ROLLBACK出来ません。

文法

DELETE [FROM] テーブル名 [FROM テーブル名] [WHERE 更新条件]

条件なしDELETE

「DELETE」に続いて更新するテーブル名を指定します。

使用例

例ではtable_nameのみを指定し、当該テーブル内のレコードを削除します。
where句による更新条件の指定が行われていない為、 table_name内に存在するすべてのレコードが削除されます。

DELETE FROM table_name 

条件ありDELETE

削除対象レコードを限定する場合は、「WHERE」にて条件を指定します。

使用例

例ではtable_name内の key_column1 = 1001 AND key_column2 = 1 に該当するレコードのみを削除します。

DELETE FROM table_name
WHERE key_column1 = 1001 AND key_column2 = 1

FROM句使用のDELETE

SQL Serverに限りますが、「DELETE」のテーブル指定の後に「FROM」句を記述することで 削除対象テーブルとは別のテーブルを結合し、結合したテーブルの値を使用することが可能となります。
これは行を削除するための条件として異なるテーブルの値を簡易に使用することが可能です。

使用例

例ではtable_name1とtable_name2をそれぞれのkey_column1で結合し、table_name2のstatusが'deleted'に該当するレコードのみを削除します。

DELETE FROM table_name1 FROM table_name2
WHERE table_name1.key_column1 = table_name2.key_column1 AND table_name2.status = 'deleted'


Last DELETEd:2022/07/17
Author:efn

';