資料庫基礎

在SQL中不加WHERE子句執行 DELETE FROM 員工,結果何者正確?

  1. A員工表格的所有資料列被刪除,留下空的表格
  2. B表格本身被刪除,表格的定義也消失
  3. C因為沒有WHERE子句,會產生錯誤而不刪除任何資料
查看答案與解析

正確答案:A. 員工表格的所有資料列被刪除,留下空的表格

DELETE是從表格中刪除資料列的DML敘述。以WHERE子句加上條件時,只刪除符合條件的資料列;省略WHERE子句時,所有資料列都會被刪除。即使DELETE刪除了所有資料列,表格的定義(欄位名稱、型別與限制)仍然保留,之後仍可用INSERT新增資料列。連同定義刪除表格本身的是DDL的 DROP TABLE 員工。UPDATE也一樣,忘了加WHERE子句就會改寫所有資料列,因此執行前確認條件很重要。若在交易之中,可在COMMIT之前以ROLLBACK取消。

  • A. 正確。所有資料列都被刪除,但表格的定義會保留。
  • B. 連同定義刪除表格的是DROP TABLE。DELETE只刪除資料列。
  • C. WHERE子句可以省略,省略時所有資料列都是對象。
練習這個領域 前往領域頁面

相關計算工具

資料庫基礎的其他題目

  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 的結果有幾筆資料列?