📑

2024 資料庫體驗營 - 課前作業一

2024/11/07に公開

Postgres

はじめに

學習一些基本的資料庫邏輯跟基礎的 SQL 語法,以及 PostgreSQL 操作與實戰應用
👉🏻 2024 後端工程師-資料庫體驗營

課前作業一

請先將提供的資料庫資料倒入 pg-sql,再開始作答以下題目。

情境1:單品查詢

客人:「這張北歐風雙人沙發多少錢?」
小美想查:想找到這張沙發的價格和庫存

SELECT name, price, stock
FROM products
WHERE name = '北歐風雙人沙發';

Query Result

name price stock
北歐風雙人沙發 39900 3

情境 2:價格比較

客人:「請列出 5000 元以下的櫃子有哪些?」
小美想查:找出櫃子類且價格在 5000 以下的商品

SELECT *
FROM products
WHERE price < 5000
AND category = '櫃子';

Query Result

name price discount_price stock category status
簡約書櫃 3500 3500 8 櫃子 active
玄關鞋櫃 2900 2900 15 櫃子 active

情境 3:庫存確認

客人:「日式雙人床架還有貨嗎?」
小美想查:確認日式雙人床架的庫存狀況

SELECT name, stock
FROM products
WHERE name = '日式雙人床架';

Query Result

name stock
日式雙人床架 6

情境 4:預算內的商品

客人:「想找 4 萬以下,而且有現貨的沙發」
小美想查:要同時符合:是沙發、4萬以下、有庫存

SELECT * 
FROM products
WHERE price < 40000
AND category = '沙發'
AND status = 'active';

Query Result

name price discount_price stock category status
北歐風雙人沙發 39900 35900 3 沙發 active

情境 5:特價且有貨

客人:「沙發有哪些特價且現貨的品項?」
小美想查:要找到沙發類且有特價(原價大於優惠價)且還有庫存的商品

SELECT * 
FROM products
WHERE category = '沙發'
AND discount_price < price
AND status = 'active';

Query Result

name price discount_price stock category status
北歐風雙人沙發 39900 35900 3 沙發 active
貓抓皮L型沙發 58900 52900 1 沙發 active

情境 6:多分類查詢

客人:「我要找櫃子或桌子」
小美想查:要找出櫃子類或桌子類的商品

SELECT * 
FROM products
WHERE category = '櫃子'
OR category = '桌子';

Query Result

name price discount_price stock category status
工業風電視櫃 5900 4900 12 櫃子 active
簡約書櫃 3500 3500 8 櫃子 active
玄關鞋櫃 2900 2900 15 櫃子 active
北歐風餐桌 15800 14800 4 桌子 active
實木咖啡桌 3200 2900 10 桌子 active
電競書桌 8900 8900 0 桌子 inactive

情境 7:指定商品

客人:「北歐風雙人沙發和貓抓皮L型沙發哪個還有貨?」
小美想查:要找出這兩張特定沙發的庫存狀況

SELECT * 
FROM products
WHERE name IN ('北歐風雙人沙發','貓抓皮L型沙發');

Query Result

name price discount_price stock category status
北歐風雙人沙發 39900 35900 3 沙發 active
貓抓皮L型沙發 58900 52900 1 沙發 active

情境 8:多分類查詢

客人:「客廳的家具有哪些?我要看沙發、櫃子跟桌子」
小美想查:要找出沙發、櫃子和桌子這三種分類的商品

SELECT * 
FROM products
WHERE category IN ('沙發','櫃子','桌子');

Query Result

name price discount_price stock category status
北歐風雙人沙發 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
北歐風餐桌 15800 14800 4 桌子 active
實木咖啡桌 3200 2900 10 桌子 active
電競書桌 8900 8900 0 桌子 inactive

情境 9:特定商品

客人:「電腦辦公椅和餐椅四入組的價格是多少?」
小美想查:要找出這兩款椅子的價格

SELECT name, price
FROM products
WHERE name IN	('電腦辦公椅','餐椅四入組');

Query Result

name price
電腦辦公椅 4500
餐椅四入組 6000

情境 10:價格區間

客人:「想找 10000 到 20000 之間的商品有哪些?」
小美想查:列出這個價格區間的所有商品

SELECT * 
FROM products
WHERE price BETWEEN 10000 AND 20000; 

Query Result

name price discount_price stock category status
日式雙人床架 12000 11200 6 床架 active
掀床五尺雙人床 19900 18900 2 床架 active
北歐風餐桌 15800 14800 4 桌子 active

情境 11:庫存區間

主管:「請列出庫存在 5 到 15 之間的商品」
小美想查:列出庫存數量在這個範圍的商品

SELECT * 
FROM products
WHERE stock BETWEEN 5 AND 15; 

Query Result

name price discount_price stock category status
典雅三人座沙發 42800 42800 5 沙發 active
工業風電視櫃 5900 4900 12 櫃子 active
簡約書櫃 3500 3500 8 櫃子 active
玄關鞋櫃 2900 2900 15 櫃子 active
日式雙人床架 12000 11200 6 床架 active
餐椅四入組 6000 5200 8 椅子 active
實木咖啡桌 3200 2900 10 桌子 active

情境 12:排除商品

主管:「列出除了沙發和床架以外的商品」
小美想查:要找出不是沙發和床架的商品

SELECT * 
FROM products
WHERE category NOT IN ('沙發','床架'); 

Query Result

name price discount_price stock category status
工業風電視櫃 5900 4900 12 櫃子 active
簡約書櫃 3500 3500 8 櫃子 active
玄關鞋櫃 2900 2900 15 櫃子 active
電腦辦公椅 4500 3900 20 椅子 active
餐椅四入組 6000 5200 8 椅子 active
北歐風餐桌 15800 14800 4 桌子 active
實木咖啡桌 3200 2900 10 桌子 active
電競書桌 8900 8900 0 桌子 inactive

情境 13:調整價格

主管:「北歐風雙人沙發要調降 2000 元」
小美想查:要如何更新這張沙發的價格

UPDATE products
SET price = price - 2000
WHERE name = '北歐風雙人沙發';

Query Result
原始資料

name price discount_price stock category status
北歐風雙人沙發 39900 35900 3 沙發 active

更新後

name price discount_price stock category status
北歐風雙人沙發 37900 35900 3 沙發 active

情境 14:更新庫存

主管:「電腦辦公椅進了 5 張」
小美想查:要如何增加這款椅子的庫存數量

UPDATE products
SET stock = stock + 5
WHERE name = '電腦辦公椅';

Query Result
原始資料

name price discount_price stock category status
電腦辦公椅 4500 3900 20 椅子 active

更新後

name price discount_price stock category status
電腦辦公椅 4500 3900 25 椅子 active

情境 15:清除資料

主管:「要清掉兒童床架和電競書桌的資料」
小美想查:要如何刪除這兩項商品

DELETE FROM products
WHERE name IN ('兒童床架','電競書桌');

Query Result

name price discount_price stock category status
貓抓皮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
餐椅四入組 6000 5200 8 椅子 active
北歐風餐桌 15800 14800 4 桌子 active
實木咖啡桌 3200 2900 10 桌子 active
北歐風雙人沙發 37900 35900 3 沙發 active
電腦辦公椅 4500 3900 25 椅子 active

最後に

目前現階段資料庫比我想的還要有趣一點,可能是因為我以往工作被稱作 Excel 大神居多(好意思w),
而且後來工作上在製作數據分析視覺化圖表 (Google Looker) 撈資料的時候被 MIS 打槍,
他說沒空沒辦法做不到無法,所以我只能在有限的權限內手動抓資料並用 excel 來進行資料的清洗,
所以很期待後續的課程,校長快開放呀!!

Discussion