2024 資料庫體驗營 - 課前作業一
はじめに
學習一些基本的資料庫邏輯跟基礎的
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