在這篇文章中,我們將探索六角學院 2024 後端工程師資料庫體驗營的精彩瞬間!跟隨小美的第一天工作,看看她如何在系統當機的危機中,運用 SQL 技能解決客戶需求。最後,我們還會提供實作內容的大綱,幫助你輕鬆掌握 SQL 查詢的基礎與進階技巧。準備好一起來學習了嗎?
🛠️ 環境準備
練習資料庫
我們將使用 pg-sql 作為線上練習環境。
資料表建立
首先,讓我們建立一個模擬家具店的商品資料表:
1 | CREATE TABLE products ( |
📝 完整資料表參考
商品名稱 | 原價 | 優惠價 | 庫存 | 類別 | 狀態 |
---|---|---|---|---|---|
北歐風雙人沙發 | 39900 | 35900 | 3 | 沙發 | active |
貓抓皮L型沙發 | 58900 | 52900 | 1 | 沙發 | active |
典雅三人座沙發 | 42800 | 42800 | 5 | 沙發 | active |
工業風電視櫃 | 5900 | 4900 | 12 | 櫃子 | active |
簡約書櫃 | 3500 | 3500 | 8 | 櫃子 | active |
玄關鞋櫃 | 2900 | 2900 | 15 | 櫃子 | active |
日式雙人床架 | 12000 | 11200 | 6 | 床架 | active |
掀床五尺雙人床 | 19900 | 18900 | 2 | 床架 | active |
兒童床架 | 8900 | 8900 | 0 | 床架 | inactive |
電腦辦公椅 | 4500 | 3900 | 20 | 椅子 | active |
餐椅四入組 | 6000 | 5200 | 8 | 椅子 | active |
北歐風餐桌 | 15800 | 14800 | 4 | 桌子 | active |
實木咖啡桌 | 3200 | 2900 | 10 | 桌子 | active |
電競書桌 | 8900 | 8900 | 0 | 桌子 | inactive |
🎬 故事背景
築夢家居的危機時刻
剛入職築夢家居的銷售顧問小美,萬萬沒想到第一天上班就遇上了巨大挑戰。系統突然大當機,而這間老字號家具店僅存的查詢工具只剩下 POS 機和資料庫。更要命的是,今天剛好是週年慶開跑的大日子,主管還在門市坐鎮!
在一籌莫展之際,小美只好向店裡的工程師小明求救…
💡 第一課:基礎查詢
初次接觸 SQL
👨🏻🦳 客人:「我要看那個貓抓皮沙發,你們還有貨嗎?」
👩🏻 小美:(慌張)啊…貓抓皮沙發…
(急忙用 LINE 詢問小明)
👩🏻 小美:學長救命!要怎麼查這個沙發?
👨🏼💻 小明:用等於就可以了:
1
2
3SELECT name, price, stock
FROM products
WHERE name = '貓抓皮L型沙發';
👩🏻 小美:喔!就是
- 選取 名字、價格、庫存
- 從 商品表
- 找 商品名等於貓抓皮L型沙發
對嗎?
👨🏼💻 小明:對!很快就上手了嘛!
👩🏻 小美:(快速輸入)哇!真的查到了!只剩一張庫存耶…
👨🏻🦳 客人:(不耐煩)小姐?到底有沒有啊?
👩🏻 小美:這款 L 型沙發目前最後一張特價 52900,要幫您預訂嗎?
👨🏻🦳 客人:哦?最後一張喔…那…就先訂起來好了!
👨🏼💻 小明:!!!這麼快就會了?根本是資料庫天才 == b
📚 基礎查詢實戰
情境 1:單品查詢
客人詢問:「這張北歐風雙人沙發多少錢?」
1 | SELECT price, stock, name -- 選取 價格、庫存、名稱 |
💡 查詢重點:使用 WHERE 子句指定條件,篩選出符合條件的資料
情境 2:價格比較
客人詢問:「請列出 5000 元以下的櫃子有哪些?」
1 | SELECT * -- 選取所有欄位 |
💡 查詢重點:使用 AND 組合多個條件,所有條件都必須符合才會回傳結果
情境 3:庫存確認
客人詢問:「日式雙人床架還有貨嗎?」
1 | SELECT * -- 選取所有欄位 |
🔄 進階查詢:邏輯運算 AND
情境 4:預算內的商品
客人詢問:「想找 4 萬以下,而且有現貨的沙發」
1 | SELECT * |
💡 查詢重點:使用 AND 組合多個條件,所有條件都必須符合才會回傳結果
情境 5:特價且有貨
客人詢問:「沙發有哪些特價且現貨的品項?」
1 | SELECT * |
🔀 進階查詢:邏輯運算 OR
情境 6:多分類查詢
客人詢問:「我要找櫃子或桌子」
1 | SELECT * |
💡 查詢重點:使用 OR 時,符合任一條件就會被包含在結果中
情境 7:指定商品
客人詢問:「北歐風雙人沙發和貓抓皮L型沙發哪個還有貨?」
1 | SELECT name, price, discount_price, stock -- 選取 名字、價格、優惠價、庫存 |
🎯 進階查詢:IN 運算
情境 8:多分類查詢
客人詢問:「客廳的家具有哪些?我要看沙發、櫃子跟桌子」
1 | SELECT * |
💡 查詢重點:使用 IN 運算子,指定多個可能的值,只要符合其中一個值就會被包含在結果中
情境 9:特定商品
客人詢問:「電腦辦公椅和餐椅四入組的價格是多少?」
1 | SELECT name, price, discount_price, stock -- 選取 名字、價格、優惠價、庫存 |
📊 進階查詢:BETWEEN
情境 10:價格區間
客人詢問:「想找 10000 到 20000 之間的商品有哪些?」
1 | SELECT * |
💡 查詢重點:使用 BETWEEN 運算子,指定價格範圍,範圍內的資料都會被包含在結果中
情境 11:庫存區間
主管要求:「請列出庫存在 5 到 15 之間的商品」
1 | SELECT * |
❌ 進階查詢:NOT IN
情境 12:排除商品
主管要求:「列出除了沙發和床架以外的商品」
1 | SELECT * |
💡 查詢重點:使用 NOT IN 運算子,排除特定值,只會回傳符合條件的資料
🔄 資料維護:更新和刪除
情境 13:調整價格
主管指示:「北歐風雙人沙發要調降 2000 元」
1 | UPDATE products -- 更新 products 表 |
💡 查詢重點:使用 UPDATE 語句,指定要更新的欄位和條件,只會更新符合條件的資料
情境 14:更新庫存
主管通知:「電腦辦公椅進了 5 張」
1 | UPDATE products -- 更新 products 表 |
情境 15:清除資料
主管指示:「要清掉兒童床架和電競書桌的資料」
1 | DELETE FROM products -- 從 products 表刪除資料 |
💡 查詢重點:使用 DELETE 語句,指定要刪除的條件,只會刪除符合條件的資料
🎯 學習重點總結
基礎查詢語法
- SELECT:選擇要顯示的欄位
- FROM:指定查詢的資料表
- WHERE:設定查詢條件
條件組合
- AND:多個條件同時成立
- OR:任一條件成立
- IN:符合列表中的任一值
- BETWEEN:範圍查詢
- NOT IN:排除特定值
資料維護操作
- UPDATE:更新資料
- DELETE:刪除資料
💪 練習建議
- 先從簡單的單一條件查詢開始
- 逐步嘗試組合多個條件
- 實際動手操作每個範例
- 嘗試修改條件創造新的查詢場景
- 記得在執行 UPDATE 和 DELETE 前先確認條件是否正確
🔗 相關資源
希望透過小美的第一天工作經歷,能幫助你更生動地理解 SQL 查詢的基礎概念。