資料新增、修改與刪除

進階

INSERT INTO 表 (欄位) VALUES (值) 新增;UPDATE 表 SET 欄位 = 新值 WHERE 條件 修改;DELETE FROM 表 WHERE 條件 刪除。UPDATE/DELETE 永遠帶 WHERE,否則影響全表;操作前先 SELECT 確認、事後驗證。

適合:中三資訊及通訊科技 · 單元:資料庫入門 · 建議學習路徑第 7/13 課

學完呢課,你會識:
  • 三句寫入語句:INSERT INTO 新增、UPDATE SET 修改、DELETE FROM 刪除。
  • INSERT 穩妥寫法:明確列出欄位,VALUES 的值與欄位一一對齊。
  • UPDATE 和 DELETE 永遠寫 WHERE;漏了就影響全表,資料庫不會警告你。
文體:編程教學課有聲朗讀

文體小知識:編程教學課每個概念都配一段可以親手試的代碼例子,照住輸入、改一改,最快學會。

資訊及通訊科技Information & Communication Technology

§課文原文 Passage

1SELECT 只會讀資料;要改變資料庫的內容,要用三句「寫入」語句:INSERT INTO 新增一筆記錄、UPDATE SET 修改現有記錄、DELETE FROM 刪除記錄。新生入學用 INSERT,學生轉班或補考出分用 UPDATE,退學用 DELETE — 資料庫的全部日常維護就是這三件事。

2INSERT 的穩陣寫法是指明欄位:INSERT INTO students (student_id, name, class, score) VALUES (2023011, '小美', '3A', 88);。明確列出欄位,即使日後表加了新欄位,這句照樣正確。修改用 UPDATE students SET score = 92 WHERE student_id = 2023011;;刪除用 DELETE FROM students WHERE student_id = 2023011;。

3UPDATE 和 DELETE 有一條救命規則:永遠寫 WHERE。漏了 WHERE 的 UPDATE students SET score = 90; 會把全班所有人的分數一次過改成 90;漏了 WHERE 的 DELETE FROM students; 會把整張表的記錄全部清空 — 而且資料庫不會問你「確定嗎?」。真實事故中,多少工程師就是在這裡失去整份資料。

4所以專業操作有一套安全流程:先用 SELECT 看清楚 WHERE 會影響哪些記錄,確認無誤才執行 UPDATE 或 DELETE,完成後再 SELECT 一次驗證結果;重要資料庫要先備份。資料完整性也由資料庫守護:主鍵重複的新增會被拒絕、分數欄輸入文字會出錯 — 這些規則令資料庫比試算表可靠得多。

1重點摘要 Summary

INSERT INTO 表 (欄位) VALUES (值) 新增;UPDATE 表 SET 欄位 = 新值 WHERE 條件 修改;DELETE FROM 表 WHERE 條件 刪除。UPDATE/DELETE 永遠帶 WHERE,否則影響全表;操作前先 SELECT 確認、事後驗證。

2生字卡 Vocabulary

I
INSERT INTO新增語句

向資料表加入一筆新記錄的 SQL 語句,配 VALUES 指定各欄位的值。

V
VALUES值清單

INSERT 中按欄位次序給出實際值的部分,例如 VALUES (2023011, '小美', '3A', 88)。

U
UPDATE ... SET修改語句

修改現有記錄欄位值的 SQL 語句,SET 指定新值,WHERE 限定範圍。

D
DELETE FROM刪除語句

從資料表刪除記錄的 SQL 語句,WHERE 決定刪哪些;漏了 WHERE 會刪光全表。

S
Scope of WHEREWHERE 影響範圍

WHERE 決定 UPDATE/DELETE 會影響哪些記錄;不寫就是全部記錄,極度危險。

D
Data integrity資料完整性

資料保持正確一致的性質,由主鍵、欄位類型和範圍規則守護。

P
Primary key constraint主鍵限制

資料庫拒絕主鍵重複或空缺的新增,保證每筆記錄可唯一辨識。

B
Backup備份

事先複製一份資料副本,出錯或事故後可以還原。

V
Verify驗證

寫入操作後再用 SELECT 檢查結果是否正確,是安全流程的最後一步。

3逐步講解 Steps

  1. 新增一筆記錄例如:INSERT INTO students (student_id, name, class, score) VALUES (2023011, '小美', '3A', 88);。欄位和值一一對應:學號 2023011、姓名小美、班別 3A、分數 88 — 四個欄位四個值,次序要對齊。文字值用單引號包住,數字不用;建議一律寫明欄位清單,次序讀起來一目了然。
  2. 新增後查證例如:SELECT * FROM students WHERE student_id = 2023011;。返回剛加入的一行 (2023011, 小美, 3A, 88) — 新增後立即 SELECT 是好習慣。SELECT 後也可指定欄位,例如 SELECT name, score FROM ...,只返回需要的資料;星號代表所有欄位,查證單一行時很方便。
  3. 修改一筆記錄例如:小美補考得 92 分:UPDATE students SET score = 92 WHERE student_id = 2023011;。WHERE 用主鍵鎖定唯一一行,只有小美的分數被改,其他人不受影響。漏寫 WHERE 的 UPDATE 會改動全表,所以執行前先默數一次條件;主鍵是最可靠的條件,因為它絕不重複。
  4. 修改多筆記錄例如:3B 班全體調分 +5:UPDATE students SET score = score + 5 WHERE class = '3B';。SET 可以用運算式(score = score + 5);WHERE 決定哪些行受影響 — 3B 每人加 5,3A、3C 不變。運算式逐行計算,各人以自己的分數加五;想改成固定分數,就寫 SET score = 90。
  5. 刪除一筆記錄例如:DELETE FROM students WHERE student_id = 2023011;。只刪走學號 2023011 那一行;刪完再用 SELECT 查,應該返回零行。DELETE 刪除整行,不可還原,執行前務必先 SELECT 確認目標;正式資料庫常用軟刪除代替:加一個 deleted 欄位做記號。
  6. 無 WHERE 的災難例如:UPDATE students SET score = 90;(漏 WHERE)— 全表所有人的分數變 90;DELETE FROM students;(漏 WHERE)— 整張表的記錄全部消失。資料庫不會彈窗問你確定嗎。防範方法是養成習慣:UPDATE 與 DELETE 一律先寫 WHERE,再補前半句;許多公司更要求先在測試資料庫演練一次。
  7. 安全操作四步例如:①SELECT * FROM students WHERE class = '3B'; 先看會影響誰;②確認名單無誤;③執行 UPDATE ... WHERE class = '3B';;④SELECT 再查一次驗證。重要系統在第二步前先備份。四步順序不可顛倒:先看、再確認、後執行、終驗證;把這個流程養成反射動作,操作資料庫就安全得多。

4圖解 Diagrams

資料庫四種操作:CRUD新增 CreateINSERT加入新記錄讀取 ReadSELECT查詢資料更新 UpdateUPDATE修改現有記錄刪除 DeleteDELETE移除記錄實例:網購=新增訂單(C)· 着訂單狀態(R)· 改送貨地址(U)· 取消(D)警告:UPDATE/DELETE 記得加 WHERE——冇條件就成個表改晒/剷晒!
圖 1:CRUD 四種操作

5例題示範 Example

例題:新生 Peter(學號 2023012)入讀 3C 班,首次測驗 75 分;補考後改為 81 分。寫出所需的 SQL 語句並驗證。

  1. 新增:INSERT INTO students (student_id, name, class, score) VALUES (2023012, 'Peter', '3C', 75);
  2. 修改:UPDATE students SET score = 81 WHERE student_id = 2023012; — 用主鍵鎖定,只改 Peter 的分數。
  3. 驗證:SELECT * FROM students WHERE class = '3C'; — 應返回 Peter 一行,分數已顯示 81。
  4. 完整性檢查:若再執行一次步驟一的 INSERT,資料庫會拒絕,因為主鍵 2023012 已存在 — 這正是主鍵限制保護資料。
  5. 答案:三句 SQL:INSERT 新增 (2023012, Peter, 3C, 75);UPDATE 把 score 改為 81;SELECT 驗證 3C 班名單。重複新增同一主鍵會被拒絕。

6常見錯誤 Mistakes

✗ 「UPDATE students SET score = 90; 只會改一筆。」
✓ 漏了 WHERE 的 UPDATE 會改動全表每一行 — 分數全部變 90;必須寫 WHERE student_id = ... 鎖定範圍。
✗ 「DELETE FROM students; 可以順手清理舊資料。」
✓ 這句會刪光整張表的記錄,而且無法後悔;要刪個別記錄必須寫 WHERE,重要操作前先備份。
✗ 「同一個學生 INSERT 兩次沒問題,資料會自動合併。」
✓ 主鍵重複的新增會被資料庫直接拒絕 — 這是主鍵限制在保護資料完整性,不是故障。
✗ 「分數欄寫 '八十五' 也可以存入。」
✓ 欄位有類型:score 是數字欄,存文字會出錯被拒;文字要存就應該設計成文字欄位。
✗ 「執行完 UPDATE 就算完成,不用再查。」
✓ 專業流程要事後驗證:再用 SELECT 檢查改動是否如預期,確認無誤才收工。

75 題快測 Quick check

Q1新生入學要加一筆記錄,應用哪句 SQL?A. SELECT B. INSERT INTO C. UPDATE

Q2UPDATE students SET score = 90; 這句漏了什麼?後果是什麼?

Q3小美轉讀 3C 班,寫出正確的 UPDATE 語句(假設她的學號是 2023011)。

Q4為什麼重複 INSERT 同一個主鍵會被資料庫拒絕?

Q5寫出修改/刪除資料前後的安全流程(至少三步)。

8重點回顧 Recap

  • 三句寫入語句:INSERT INTO 新增、UPDATE SET 修改、DELETE FROM 刪除。
  • INSERT 穩妥寫法:明確列出欄位,VALUES 的值與欄位一一對齊。
  • UPDATE 和 DELETE 永遠寫 WHERE;漏了就影響全表,資料庫不會警告你。
  • 資料完整性由規則守護:主鍵不重複、欄位類型和範圍要正確。
  • 安全四步:SELECT 確認 → 備份 → 執行 → SELECT 驗證。

同級其他科

同一科其他級別