可以使用線上資料庫工具來練習 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 的應用有更深入的了解!