資料新增、修改與刪除
進階INSERT INTO 表 (欄位) VALUES (值) 新增;UPDATE 表 SET 欄位 = 新值 WHERE 條件 修改;DELETE FROM 表 WHERE 條件 刪除。UPDATE/DELETE 永遠帶 WHERE,否則影響全表;操作前先 SELECT 確認、事後驗證。
- 三句寫入語句:INSERT INTO 新增、UPDATE SET 修改、DELETE FROM 刪除。
- INSERT 穩妥寫法:明確列出欄位,VALUES 的值與欄位一一對齊。
- UPDATE 和 DELETE 永遠寫 WHERE;漏了就影響全表,資料庫不會警告你。
文體小知識:編程教學課每個概念都配一段可以親手試的代碼例子,照住輸入、改一改,最快學會。
§課文原文 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
向資料表加入一筆新記錄的 SQL 語句,配 VALUES 指定各欄位的值。
INSERT 中按欄位次序給出實際值的部分,例如 VALUES (2023011, '小美', '3A', 88)。
修改現有記錄欄位值的 SQL 語句,SET 指定新值,WHERE 限定範圍。
從資料表刪除記錄的 SQL 語句,WHERE 決定刪哪些;漏了 WHERE 會刪光全表。
WHERE 決定 UPDATE/DELETE 會影響哪些記錄;不寫就是全部記錄,極度危險。
資料保持正確一致的性質,由主鍵、欄位類型和範圍規則守護。
資料庫拒絕主鍵重複或空缺的新增,保證每筆記錄可唯一辨識。
事先複製一份資料副本,出錯或事故後可以還原。
寫入操作後再用 SELECT 檢查結果是否正確,是安全流程的最後一步。
3逐步講解 Steps
- 新增一筆記錄例如:INSERT INTO students (student_id, name, class, score) VALUES (2023011, '小美', '3A', 88);。欄位和值一一對應:學號 2023011、姓名小美、班別 3A、分數 88 — 四個欄位四個值,次序要對齊。文字值用單引號包住,數字不用;建議一律寫明欄位清單,次序讀起來一目了然。
- 新增後查證例如:SELECT * FROM students WHERE student_id = 2023011;。返回剛加入的一行 (2023011, 小美, 3A, 88) — 新增後立即 SELECT 是好習慣。SELECT 後也可指定欄位,例如 SELECT name, score FROM ...,只返回需要的資料;星號代表所有欄位,查證單一行時很方便。
- 修改一筆記錄例如:小美補考得 92 分:UPDATE students SET score = 92 WHERE student_id = 2023011;。WHERE 用主鍵鎖定唯一一行,只有小美的分數被改,其他人不受影響。漏寫 WHERE 的 UPDATE 會改動全表,所以執行前先默數一次條件;主鍵是最可靠的條件,因為它絕不重複。
- 修改多筆記錄例如:3B 班全體調分 +5:UPDATE students SET score = score + 5 WHERE class = '3B';。SET 可以用運算式(score = score + 5);WHERE 決定哪些行受影響 — 3B 每人加 5,3A、3C 不變。運算式逐行計算,各人以自己的分數加五;想改成固定分數,就寫 SET score = 90。
- 刪除一筆記錄例如:DELETE FROM students WHERE student_id = 2023011;。只刪走學號 2023011 那一行;刪完再用 SELECT 查,應該返回零行。DELETE 刪除整行,不可還原,執行前務必先 SELECT 確認目標;正式資料庫常用軟刪除代替:加一個 deleted 欄位做記號。
- 無 WHERE 的災難例如:UPDATE students SET score = 90;(漏 WHERE)— 全表所有人的分數變 90;DELETE FROM students;(漏 WHERE)— 整張表的記錄全部消失。資料庫不會彈窗問你確定嗎。防範方法是養成習慣:UPDATE 與 DELETE 一律先寫 WHERE,再補前半句;許多公司更要求先在測試資料庫演練一次。
- 安全操作四步例如:①SELECT * FROM students WHERE class = '3B'; 先看會影響誰;②確認名單無誤;③執行 UPDATE ... WHERE class = '3B';;④SELECT 再查一次驗證。重要系統在第二步前先備份。四步順序不可顛倒:先看、再確認、後執行、終驗證;把這個流程養成反射動作,操作資料庫就安全得多。
4圖解 Diagrams
5例題示範 Example
例題:新生 Peter(學號 2023012)入讀 3C 班,首次測驗 75 分;補考後改為 81 分。寫出所需的 SQL 語句並驗證。
- 新增:INSERT INTO students (student_id, name, class, score) VALUES (2023012, 'Peter', '3C', 75);
- 修改:UPDATE students SET score = 81 WHERE student_id = 2023012; — 用主鍵鎖定,只改 Peter 的分數。
- 驗證:SELECT * FROM students WHERE class = '3C'; — 應返回 Peter 一行,分數已顯示 81。
- 完整性檢查:若再執行一次步驟一的 INSERT,資料庫會拒絕,因為主鍵 2023012 已存在 — 這正是主鍵限制保護資料。
- 答案:三句 SQL:INSERT 新增 (2023012, Peter, 3C, 75);UPDATE 把 score 改為 81;SELECT 驗證 3C 班名單。重複新增同一主鍵會被拒絕。
6常見錯誤 Mistakes
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 驗證。