分類
網頁製作/軟體開發知識

2024 後端工程師 – 資料庫體驗營 | 小節作業:家具店的菜雞銷售奇遇記

資料庫介紹與模擬作業資料

可以使用線上資料庫工具來練習 SQL 語法的操作

劇情旁白

剛進入『築夢家居』當銷售顧問的小美,

沒想到第一天上班就遇到系統大當機,
最扯的是這間老字號家具店只有 POS 機和資料庫,
也沒有網站可以查詢

偏偏今天是週年慶開跑,主管又在門市坐鎮,
店裡生意好到不行,只好硬著頭皮詢問店裡的工程師大大…

劇情對話

(門市內)

客人:我要看那個貓抓皮沙發,你們還有貨嗎?

小美:(慌張)啊…貓抓皮沙發…

(急著用 LINE 問小明)

小美:學長救命!要怎麼查這個沙發?

小明:用等於就可以了:

   SELECT name, price, stock

   FROM products

   WHERE name = ‘貓抓皮L型沙發’;

小美:喔!就是

   選取 名字、價格、庫存

   從 商品表

   找 商品名等於貓抓皮L型沙發

   對嗎?

小明:對!很快就上手了嘛!

小美:(快速輸入)

   哇!真的查到了!

   只剩一張庫存耶…

客人:(不耐煩)小姐?到底有沒有啊?

小美: 這款 L 型沙發目前最後一張特價 52900,要幫您預訂嗎?

客人:哦?最後一張喔…那…就先訂起來好了!

小明:!!!這麼快就會了?根本是資料庫天才 == b

小明:那我再考你幾題,如果你都會了以後,那我就可以退休了ㄏㄏㄏ

小美:…..

情境 1:單品查詢

問題:客人想知道北歐風雙人沙發的價格和庫存。

解法:使用 SELECT 語句,從資料表中查詢特定商品的價格與庫存。

SELECT price, stock  -- 選擇要顯示的欄位:價格與庫存
FROM products        -- 從 products 資料表中查詢
WHERE name = '北歐風雙人沙發';  -- 篩選商品名稱為 "北歐風雙人沙發"

這裡的 WHERE 條件讓查詢能鎖定商品名稱,確保只查詢到北歐風雙人沙發的相關資訊。

情境 2:價格比較

問題:列出價格在 5000 元以下的櫃子。

解法:使用 AND 條件進行多個篩選條件的組合。

SELECT name, price  -- 選擇要顯示的欄位:商品名稱與價格
FROM products       -- 從 products 資料表中查詢
WHERE category = '櫃子'  -- 篩選商品類別為 "櫃子"
AND price < 5000;  -- 價格條件:低於 5000 元

這裡的 AND 運算符用來同時篩選商品類型和價格條件。

情境 3:庫存確認

問題:查詢日式雙人床架的庫存情況。

解法:只需要單純查詢庫存欄位,並使用 WHERE 條件進行篩選。

SELECT stock  -- 選擇要顯示的欄位:庫存
FROM products -- 從 products 資料表中查詢
WHERE name = '日式雙人床架';  -- 篩選商品名稱為 "日式雙人床架"

情境 4:預算內的商品

問題:查詢價格在 4 萬以下且有現貨的沙發。

解法:將多個條件組合在一起,使用 AND 運算符。

SELECT name, price, stock  -- 選擇要顯示的欄位:商品名稱、價格、庫存
FROM products              -- 從 products 資料表中查詢
WHERE category = '沙發'    -- 篩選商品類別為 "沙發"
AND price < 40000          -- 價格條件:低於 40000 元
AND stock > 0;             -- 庫存條件:庫存數量大於 0

此處的條件組合讓我們能篩選出價格低於 4 萬且仍有庫存的沙發。

情境 5:特價且有貨

問題:找出有特價且現貨的沙發。

解法:除了價格條件外,這裡還需確認優惠價低於原價。

SELECT name, price, discount_price, stock  -- 選擇要顯示的欄位:商品名稱、價格、優惠價、庫存
FROM products                              -- 從 products 資料表中查詢
WHERE category = '沙發'                    -- 篩選商品類別為 "沙發"
AND price > discount_price                 -- 篩選條件:商品原價大於優惠價
AND stock > 0;                             -- 庫存條件:庫存數量大於 0

情境 6:多分類查詢

問題:查詢所有櫃子或桌子的商品。

解法:使用 OR 運算符進行類型篩選。

SELECT name, price, stock  -- 選擇要顯示的欄位:商品名稱、價格、庫存
FROM products              -- 從 products 資料表中查詢
WHERE category = '櫃子'    -- 篩選商品類別為 "櫃子"
OR category = '桌子';      -- 或者篩選商品類別為 "桌子"

OR 運算符允許我們同時篩選多個類別。

情境 7:指定商品

問題:查詢北歐風雙人沙發和貓抓皮L型沙發的庫存狀況。

解法:針對多個具體商品名稱進行篩選。

SELECT name, stock  -- 選擇要顯示的欄位:商品名稱與庫存
FROM products       -- 從 products 資料表中查詢
WHERE name = '北歐風雙人沙發'  -- 篩選商品名稱為 "北歐風雙人沙發"
OR name = '貓抓皮L型沙發';    -- 或者篩選商品名稱為 "貓抓皮L型沙發"

情境 8:多分類查詢(使用 IN)

問題:查詢客廳的家具,如沙發、櫃子和桌子。

解法:使用 IN 運算符進行多分類篩選。

SELECT name, price, stock  -- 選擇要顯示的欄位:商品名稱、價格、庫存
FROM products              -- 從 products 資料表中查詢
WHERE category IN ('沙發', '櫃子', '桌子');  -- 使用 IN 篩選商品類別為 "沙發"、"櫃子" 或 "桌子"

IN 運算符可以同時進行多個類別的篩選,比 OR 更簡潔。

情境 9:特定商品(使用 IN)

問題:查詢電腦辦公椅和餐椅四入組的價格。

解法:再次使用 IN 運算符來篩選多個商品名稱。

SELECT name, price  -- 選擇要顯示的欄位:商品名稱與價格
FROM products       -- 從 products 資料表中查詢
WHERE name IN ('電腦辦公椅', '餐椅四入組');  -- 使用 IN 篩選商品名稱為 "電腦辦公椅" 或 "餐椅四入組"

情境 10:價格區間(使用 BETWEEN)

問題:查詢價格在 10000 到 20000 元之間的商品。

解法:使用 BETWEEN 關鍵字來篩選價格區間。

SELECT name, price  -- 選擇要顯示的欄位:商品名稱與價格
FROM products       -- 從 products 資料表中查詢
WHERE price BETWEEN 10000 AND 20000;  -- 使用 BETWEEN 篩選價格介於 10000 到 20000 元之間

BETWEEN 非常適合用於查詢數值範圍。

情境 11:庫存區間(使用 BETWEEN)

問題:查詢庫存在 5 到 15 之間的商品。

解法:同樣使用 BETWEEN 關鍵字,但這次是針對庫存數量。

SELECT name, stock  -- 選擇要顯示的欄位:商品名稱與庫存
FROM products       -- 從 products 資料表中查詢
WHERE stock BETWEEN 5 AND 15;  -- 使用 BETWEEN 篩選庫存介於 5 到 15 之間

情境 12:排除商品(使用 NOT IN)

問題:查詢除沙發和床架以外的商品。

解法:使用 NOT IN 排除特定類別。

SELECT name, price, stock  -- 選擇要顯示的欄位:商品名稱、價格、庫存
FROM products              -- 從 products 資料表中查詢
WHERE category NOT IN ('沙發', '床架');  -- 使用 NOT IN 排除商品類別為 "沙發" 和 "床架"

情境 13:調整價格(更新)

問題:調降北歐風雙人沙發的價格 2000 元。

解法:使用 UPDATE 語句更新價格。

UPDATE products         -- 更新 products 資料表
SET price = price - 2000  -- 將價格降低 2000 元
WHERE name = '北歐風雙人沙發';  -- 篩選商品名稱為 "北歐風雙人沙發"

情境 14:更新庫存(更新)

問題:增加電腦辦公椅的庫存 5 張。

解法:使用 UPDATE 語句更新庫存。

UPDATE products          -- 更新 products 資料表
SET stock = stock + 5    -- 將庫存增加 5
WHERE name = '電腦辦公椅';  -- 篩選商品名稱為 "電腦辦公椅"

情境 15:清除資料(刪除)

問題:刪除兒童床架和電競書桌的資料。

解法:使用 DELETE 語句進行刪除操作。

DELETE FROM products              -- 從 products 資料表中刪除資料
WHERE name IN ('兒童床架', '電競書桌');  -- 使用 IN 篩選商品名稱為 "兒童床架" 或 "電競書桌"

同學加碼 | 情境 16:查詢庫存超過 10 的商品

問題:找出庫存超過 10 的商品。

解法:使用 SELECT 語句篩選庫存超過 10 的商品。

SELECT name, stock  -- 選擇要顯示的欄位:商品名稱與庫存
FROM products       -- 從 products 資料表中查詢
WHERE stock > 10;   -- 篩選庫存超過 10 的商品

額外題目 | 折扣後價格篩選

客人:「有哪些商品的優惠價低於 1 萬元且有現貨?」

小美想查:找出優惠價低於 10000 元且有庫存的商品,並顯示商品名稱、優惠價與庫存量。

總結

透過這些情境題,我們可以看到 SQL 在資料庫管理上的強大功能。從簡單的查詢到更複雜的篩選條件、數據更新和刪除操作,SQL 提供了靈活且高效的方式來處理資料。無論是篩選單一商品、處理庫存,還是根據不同條件進行篩選,SQL 語法都能輕鬆解決。

希望這篇「菜雞銷售奇遇記」能讓你對 SQL 的應用有更深入的了解!

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *