# Day 7 - SQL 語法入門 ## 劇情背景 海克絲一臉嚴肅地走過來:「我偷偷跑去問你培訓班的教練了,他是我前同事。」 你心裡一沉:「問...問什麼?」 「他偷爆料說你的資料庫學得很差!」海克絲叉著腰說。 「呃...那個...」你完全無法反駁。 「沒關係!今天要來惡補一下!」海克絲打開電腦,「昨天你學會看資料表了,今天來學怎麼『跟資料庫說話』!」 「跟資料庫說話?」 「對!資料庫聽不懂中文,但它聽得懂 SQL。」海克絲指著螢幕,「SQL 就是跟資料庫溝通的語言,學會這幾個關鍵字,你就能查資料、新增資料、修改資料、刪除資料!」 「聽起來很厲害欸!但是...我還以為都是用後端程式來操控資料庫欸?」 海克絲搖搖頭:「這是很多新手的迷思!其實操作資料庫不只能用程式碼,還可以用圖形化工具!像是 DBeaver,讓你用滑鼠點點就能操作資料庫。」 「真的假的?那不是很方便!」 「對啊!開發的時候用 DBeaver 查資料超方便,不用每次都寫程式。今天要把這些通通補起來!」 ![angry](https://hackmd.io/_uploads/r15N9csBbg.png) --- ## 學習目標 - 認識兩種資料庫操作方式:後端程式 vs 管理工具(DBeaver) - 學會 SQL 六大關鍵字:SELECT、FROM、WHERE、INSERT、UPDATE、DELETE - 理解「查詢三兄弟」:SELECT + FROM + WHERE - 理解「操作三劍客」:INSERT、UPDATE、DELETE - 了解 UPDATE 和 DELETE 忘記加 WHERE 的危險性 ⚠️ --- ## 核心概念 ### 每日任務名詞說明 - PostgreSQL = 關聯式資料庫,資料以「表格」形式儲存,表格之間可以建立「關聯」 - SQL = 人跟資料庫說話的語言(包括六大關鍵字:SELECT、FROM、WHERE、INSERT、UPDATE、DELETE) - DBeaver = 資料庫的管理工具,方便人手動操作、修改以及測試 - GUI = 圖形界面,讓人透過視覺化的介面進行操作,不需要寫很多程式 ### 兩種資料庫操作方式 | 方式 | 說明 | 使用時機 | |------|------|----------| | 後端程式 | 透過程式碼連接資料庫 | 正式環境、自動化操作 | | 管理工具(DBeaver) | 用圖形介面直接操作 | 開發除錯、查看資料 | **重點:** 兩種方式是互補的!開發時用 DBeaver 方便查看,上線後用程式碼自動執行。 ### SQL 六大天王 **① 查詢三兄弟:SELECT / FROM / WHERE** ```sql SELECT name, price -- 我要看什麼欄位? FROM CREDIT_PACKAGE -- 去哪找這張表? WHERE price > 2000 -- 篩選條件 ``` | 關鍵字 | 作用 | 生活比喻 | |--------|------|----------| | SELECT | 選擇要看的欄位 | 「老闆,我要看名字和價格!」 | | FROM | 指定資料表 | 「我要看主菜的菜單」 | | WHERE | 加上篩選條件 | 「只給我價格超過 2000 的」 | **重要:** 沒有 WHERE 就會撈出全部資料❗️ **② 操作三劍客:INSERT / UPDATE / DELETE** ```sql -- 新增資料 INSERT INTO SKILL VALUES ('拳擊') -- 修改資料 UPDATE USER SET role = 'coach' WHERE id = 2 -- 刪除資料 DELETE FROM CREDIT_PACKAGE WHERE id = 3 ``` | 關鍵字 | 作用 | 比喻 | |--------|------|------| | INSERT | 新增一筆資料 | 在筆記本上新增一行 | | UPDATE | 修改現有資料 | 用立可白塗掉重寫 | | DELETE | 刪除資料 | 把資料擦掉(回不來❗️) | ### 三、危險警告:忘了 WHERE 的後果 ```sql -- ⚠️ 危險!會把「所有人」都改成教練 UPDATE USER SET role = 'coach' -- ⚠️ 危險!會刪除「整張表」的資料 DELETE FROM USER ``` **記住:** UPDATE 和 DELETE 一定要**加 WHERE**,不然會影響全部資料! --- ## SQL 練習場題目預覽 (共 12 題) ### CREDIT_PACKAGE 資料表 (5 題) | 欄位 | 說明 | |------|------| | id | 方案編號 | | name | 方案名稱 | | credit_amount | 堂數 | | price | 價格 | 1. 新增「28 堂組合包」方案(28 堂、6000 元) 2. 修改 id=2 的方案價格為 2000 3. 修改 id=1 的方案名稱為「新手體驗包」 4. 刪除 id=3 的方案 5. 新增「雙 11 限定包」方案(50 堂、9999 元) ### SKILL 資料表 (2 題) | 欄位 | 說明 | |------|------| | id | 技能編號 | | name | 技能名稱 | 6. 新增「拳擊」技能 7. 新增「游泳」技能 ### USER 資料表 (5 題) | 欄位 | 說明 | |------|------| | id | 使用者編號 | | name | 姓名 | | email | 電子郵件 | | role | 角色 (user/coach) | | password | 密碼 | 8. 新增使用者「陳大文」(chen@email.com、user、密碼) 9. 將 id=2 的使用者角色改為教練 10. 刪除 id=3 的使用者 11. 新增教練「張健身」(coach@email.com、coach、密碼) 12. 修改 id=1 的使用者名稱為「王大明」 --- ## 遊戲連結 請進入遊戲完成本日關卡: 👉 **[點此進入遊戲](https://hexschool.github.io/backend-camp-game/)** ## 回報格式(確認打卡細節) 1. 完成遊戲中的測驗並截圖完成畫面 2. 到體驗營 Discord 的[每日活動頻道](https://discord.com/channels/801807326054055996/1446368763581562880),找到當天任務的討論串 3. 在討論串留言貼上截圖,打卡儀表板會自動記錄你的成績 4. 分享一下此關卡有哪些知識點讓你印象深刻,甚至有透過 AI 服務延伸學習 ![截圖 2026-01-02 下午5.16.29](https://hackmd.io/_uploads/BJig6WSEZg.png) --- --- ## 海克絲的叮嚀 > 「SQL 是後端工程師的必備技能,學會這六個關鍵字,你就能跟資料庫對話了!記住,UPDATE 和 DELETE 一定要加 WHERE,不然一個不小心就會把整張表的資料改掉或刪掉。還有,DBeaver 是開發時的好夥伴,可以讓你直接看到資料庫裡面有什麼,除錯的時候超好用!」 --- ## 重點整理 ### 今天學到的概念 1. **資料庫操作方式** = 後端程式(自動化)+ 管理工具(開發除錯) 2. **查詢三兄弟** = SELECT(看什麼)+ FROM(去哪找)+ WHERE(篩選條件) 3. **操作三劍客** = INSERT(新增)+ UPDATE(修改)+ DELETE(刪除) 4. **危險警告** = UPDATE/DELETE 忘記 WHERE 會影響全部資料! ### SQL 語法速查表 | 操作 | 語法 | 範例 | |------|------|------| | 查詢 | SELECT ... FROM ... WHERE ... | `SELECT * FROM USER WHERE role = 'coach'` | | 新增 | INSERT INTO ... VALUES ... | `INSERT INTO SKILL VALUES ('拳擊')` | | 修改 | UPDATE ... SET ... WHERE ... | `UPDATE USER SET role = 'coach' WHERE id = 2` | | 刪除 | DELETE FROM ... WHERE ... | `DELETE FROM SKILL WHERE id = 3` |