データベースの基礎
SQLで DELETE FROM 社員 を、WHERE句を付けずに実行したときの結果として正しいものはどれか。
- A社員表のすべての行が削除され、空の表が残る
- B表そのものが削除され、表の定義もなくなる
- CWHERE句がないので、エラーになって何も削除されない
答えと解説を見る
正解:A. 社員表のすべての行が削除され、空の表が残る
DELETEは、表から行を削除するDMLの文です。WHERE句で条件を付けるとその条件に合う行だけが削除されますが、WHERE句を省略すると、すべての行が削除の対象になります。DELETEで行がなくなっても、表の定義(列の名前や型、制約)は残るので、その後もINSERTで行を追加できます。表そのものを定義ごと削除するのは、DDLの DROP TABLE 社員 です。UPDATEも同じで、WHERE句を付け忘れるとすべての行が書き換わるので、実行する前に条件を確かめることが大切です。トランザクションの中であれば、COMMITする前にROLLBACKで取り消せます。
- A. 正しい。すべての行が削除されますが、表の定義は残ります。
- B. 表を定義ごと削除するのはDROP TABLEです。DELETEは行だけを削除します。
- C. WHERE句は省略でき、省略するとすべての行が対象になります。