資料庫基礎

客戶表格(客戶編號, 姓名)的主鍵是客戶編號,訂單表格(訂單編號, 客戶編號)的客戶編號被定義為參照客戶表格客戶編號的外鍵。客戶表格中只有客戶編號為'C1'與'C2'的資料列。在此狀態下執行 INSERT INTO 訂單 VALUES ('O9', 'C5') 的結果,下列何者正確?

  1. A違反參考完整性限制,資料列不會新增並產生錯誤
  2. B資料列會新增,客戶表格中也會自動新增客戶編號為'C5'的資料列
  3. C資料列會新增,但客戶編號的值會被換成NULL
查看答案與解析

正確答案:A. 違反參考完整性限制,資料列不會新增並產生錯誤

外鍵是參照其他表格(此處為客戶表格)主鍵等的欄位,會強制遵守參考完整性限制:只能存入參照對象中存在的值或NULL。客戶表格中沒有'C5'這位客戶,因此新增不存在客戶之訂單的操作會被DBMS拒絕並產生錯誤。這樣可以防止留下不知屬於哪位客戶的訂單。反過來,若要從客戶表格刪除仍有訂單的客戶資料列,在預設行為(NO ACTION)下也會被拒絕。在外鍵定義中加上 ON DELETE CASCADE,就能在刪除客戶時連帶刪除該客戶的訂單。

  • A. 正確。參照不存在之客戶編號的資料列會被參考完整性限制拒絕。
  • B. DBMS不會自動建立被參照的資料列。
  • C. DBMS不會擅自把外鍵的值換成NULL,操作會產生錯誤。
練習這個領域 前往領域頁面

相關計算工具

資料庫基礎的其他題目

  1. SQL敘述可分為資料定義語言(DDL)、資料操作語言(DML)與資料控制語言(DCL)。屬於DDL的是下列何者?
  2. 商品表格中有(商品名稱, 價格)為(筆, 120)、(筆記本, 250)、(橡皮擦, 80)、(資料夾, 300)、(尺, 150)的5筆資料列。依序列出 SELECT 商品名稱 FROM 商品 WHERE 價格 >= 150 ORDER BY 價格 DESC 所傳回之資料列的是下列何者?
  3. 員工表格的部門欄位中,由上而下依序為 業務、研發、業務、總務、研發、業務(共6筆)。SELECT DISTINCT 部門 FROM 員工 的結果有幾筆資料列?
  4. 在SQL中不加WHERE子句執行 DELETE FROM 員工,結果何者正確?
  5. 考試表格的分數欄位中有 80、NULL、70、90 共4個值(NULL表示未應考)。SELECT AVG(分數) FROM 考試 的結果是下列何者?