☕ NEW! 完成新手任務即可參加抽獎!LINE 星巴克禮券等你拿,名額有限!        🎉 推廣活動:邀請好友註冊 DevLearn,累積推薦抽 LINE 星巴克禮券! 活動詳情 →        🔥 活動期間 2026/4/1 - 5/31 |已有 0 人參加       
sql 初學

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 清空表格 🔴 高(不可復原)

💡 大家的想法 · 0

載入中...
💬 即時聊天室 🟢 0 人在線
😀 😎 🤓 💻 🎮 🎸 🔥
➕ 新問題
📋 我的工單
💬 LINE 社群
🔒
需要註冊才能使用此功能
註冊帳號即可解鎖測驗、遊戲、簽到、筆記下載等所有功能,完全免費!
免費註冊