ある受発注システムのデータベース担当者が、以下の SQL 文を実行した。「DELETE FROM orders WHERE order_date < '2020-01-01'」この SQL 文の説明として正しいものはどれか。
- A. orders テーブルの order_date カラムを削除する DDL 文である
- B. 2020年1月1日より前の注文日を持つ orders テーブルの行データを削除する DML 文である
- C. 2020年1月1日より前の注文日を持つ行を非表示にするが、物理削除は行わない
- D. orders テーブルそのものを削除する DDL 文である
解答と解説を見る
正解: B
DELETE FROM テーブル名 WHERE 条件 は DML(データ操作言語)の DELETE 文であり、条件を満たすテーブル内の行データを物理的に削除する。この場合、orders テーブルから order_date が 2020年1月1日より前のレコードが完全に削除される。テーブルそのものを削除するのは DDL の DROP TABLE 文である。DELETE は物理削除であり、非表示や論理削除ではない(論理削除はフラグカラムを UPDATE する別の設計手法)。カラムを削除するのは DDL の ALTER TABLE ... DROP COLUMN 文である。