データベースの基礎

SQLで DELETE FROM 社員 を、WHERE句を付けずに実行したときの結果として正しいものはどれか。

  1. A社員表のすべての行が削除され、空の表が残る
  2. B表そのものが削除され、表の定義もなくなる
  3. CWHERE句がないので、エラーになって何も削除されない
答えと解説を見る

正解:A. 社員表のすべての行が削除され、空の表が残る

DELETEは、表から行を削除するDMLの文です。WHERE句で条件を付けるとその条件に合う行だけが削除されますが、WHERE句を省略すると、すべての行が削除の対象になります。DELETEで行がなくなっても、表の定義(列の名前や型、制約)は残るので、その後もINSERTで行を追加できます。表そのものを定義ごと削除するのは、DDLの DROP TABLE 社員 です。UPDATEも同じで、WHERE句を付け忘れるとすべての行が書き換わるので、実行する前に条件を確かめることが大切です。トランザクションの中であれば、COMMITする前にROLLBACKで取り消せます。

  • A. 正しい。すべての行が削除されますが、表の定義は残ります。
  • B. 表を定義ごと削除するのはDROP TABLEです。DELETEは行だけを削除します。
  • C. WHERE句は省略でき、省略するとすべての行が対象になります。
この分野を解く 分野ページへ

関連する計算ツール

データベースの基礎の参考書を探す PR

Amazonの検索結果へのリンクです。Amazonのアソシエイトとして、半導体教室は適格販売により収入を得ています。

データベースの基礎のほかの問題

  1. 試験表の点数の列に、80、NULL、70、90 の4つの値がある(NULLは未受験を表す)。SELECT AVG(点数) FROM 試験 の結果はどれか。
  2. 成績表の点数の列に、50、NULL、70、NULL、90、30 の6つの値がある。SELECT COUNT(*), COUNT(点数), AVG(点数) FROM 成績 の結果を順に並べたものはどれか。
  3. 社員表(社員番号, 部署, 給与)から、部署ごとの平均給与が300以上の部署と、その平均給与を求めたい。正しいSQL文はどれか。
  4. 売上表(店舗, 金額)に、(A, 500)、(A, 700)、(B, 300)、(B, 400)、(C, 1200)、(D, 200)、(D, 900) の7行がある。SELECT 店舗, SUM(金額) FROM 売上 GROUP BY 店舗 HAVING SUM(金額) >= 1000 の結果は何行になるか。
  5. 社員表(氏名, 部署, 給与)に8行あり、部署ごとの給与は、営業が320、280、350、開発が400、310、総務が260、300、企画が330である。SELECT 部署, COUNT(*) FROM 社員 WHERE 給与 >= 300 GROUP BY 部署 HAVING COUNT(*) >= 2 の結果は何行になるか。