INSERT、UPDATE、DELETE 資料操作
三大操作一覽
比喻: 📝
- INSERT = 在筆記本上「新增一頁」
- UPDATE = 把某一頁的內容「修改」
- DELETE = 把某一頁「撕掉」
INSERT — 新增資料
新增一筆
INSERT INTO Students (Name, Age, Email) -- ← 指定要填的欄位
VALUES ('小明', 20, 'ming@test.com'); -- ← 對應的值
逐行解析:
INSERT INTO Students -- 要新增資料到 Students 表
(Name, Age, Email) -- 指定要填哪些欄位(Id 通常自動產生)
VALUES ('小明', 20, 'ming@test.com') -- 填入對應的值
-- 字串用單引號 '...'
-- 數字直接寫
新增多筆
INSERT INTO Students (Name, Age, Email)
VALUES
('小明', 20, 'ming@test.com'), -- ← 第 1 筆
('小華', 22, 'hua@test.com'), -- ← 第 2 筆
('小美', 21, 'mei@test.com'); -- ← 第 3 筆(最後用分號)
用 SELECT 結果新增
-- 把查詢結果直接插入另一個表
INSERT INTO GoodStudents (Name, Age)
SELECT Name, Age -- ← 從查詢結果取值
FROM Students
WHERE Score >= 90; -- ← 只取 90 分以上的
UPDATE — 修改資料
UPDATE Students -- ← 要修改 Students 表
SET Age = 21, -- ← 把 Age 改成 21
Email = 'new@test.com' -- ← 同時改 Email
WHERE Id = 1; -- ← 只改 Id=1 的那筆
逐行解析:
UPDATE Students -- 指定要修改的表
SET Age = 21 -- SET 後面接「欄位 = 新值」
Email = 'new@test.com' -- 可以同時改多個欄位,用逗號分隔
WHERE Id = 1 -- ⚠️ 一定要加 WHERE!不然會改到全部資料!
用運算式更新
-- 所有學生年齡 +1
UPDATE Students
SET Age = Age + 1; -- ← 沒有 WHERE = 全部都改
-- 分數低於 60 的加 10 分(補救)
UPDATE Students
SET Score = Score + 10
WHERE Score < 60;
⚠️ 超重要警告: UPDATE 忘了加 WHERE 會改掉全部資料!
DELETE — 刪除資料
DELETE FROM Students -- ← 從 Students 表刪除
WHERE Id = 3; -- ← 只刪 Id=3 的那筆
逐行解析:
DELETE FROM Students -- 指定要從哪個表刪除
WHERE Id = 3; -- ⚠️ 一定要加 WHERE!不然會刪光全部!
刪除所有資料
-- 方法 1:DELETE(可以 rollback,較慢)
DELETE FROM Students; -- 刪掉所有資料,但表還在
-- 方法 2:TRUNCATE(不可 rollback,較快)
TRUNCATE TABLE Students; -- 清空表格,更快速
安全操作守則 🛡️
-- ✅ 好習慣:先用 SELECT 確認要改/刪的資料
SELECT * FROM Students WHERE Id = 3; -- 先看看是哪筆
-- 確認沒問題後再改
UPDATE Students SET Age = 25 WHERE Id = 3;
-- ✅ 好習慣:用 Transaction 包起來
BEGIN;
DELETE FROM Students WHERE Score < 30;
-- 看看結果對不對...
SELECT COUNT(*) FROM Students;
COMMIT; -- 確認沒問題就 COMMIT
-- 或
ROLLBACK; -- 後悔了就 ROLLBACK 復原
RETURNING(PostgreSQL 專用)
-- 新增後直接回傳新資料
INSERT INTO Students (Name, Age)
VALUES ('小新', 19)
RETURNING Id, Name; -- ← 回傳自動產生的 Id
-- 結果:Id=4, Name=小新
-- 刪除後確認刪了什麼
DELETE FROM Students
WHERE Score < 30
RETURNING *; -- ← 回傳被刪的資料
小結
| 語法 | 用途 | 危險度 |
|---|---|---|
INSERT INTO ... VALUES |
新增資料 | 🟢 低 |
UPDATE ... SET ... WHERE |
修改資料 | 🟡 中(忘 WHERE 改全部) |
DELETE FROM ... WHERE |
刪除資料 | 🔴 高(忘 WHERE 刪光) |
TRUNCATE |
清空表格 | 🔴 高(不可復原) |