前置作業
老師模擬了一個過去我曾經歷過的真實案例改編
請先將此簡報的
模擬資料 倒入
pg-sql,再行答題
劇情旁白
剛進入『築夢家居』當銷售顧問的小美,
沒想到第一天上班就遇到系統大當機,
最扯的是這間老字號家具店只有 POS 機和資料庫,
也沒有網站可以查詢
偏偏今天是週年慶開跑,主管又在門市坐鎮,
店裡生意好到不行,只好硬著頭皮詢問店裡的工程師大大...
劇情對話
(門市內)
客人:我要看那個貓抓皮沙發,你們還有貨嗎?
小美:(慌張)啊...貓抓皮沙發...
(急著用 LINE 問小明)
小美:學長救命!要怎麼查這個沙發?
小明:用等於就可以了:
小美:喔!就是
對嗎?
小明:對!很快就上手了嘛!
小美:(快速輸入)
哇!真的查到了!
只剩一張庫存耶...
客人:(不耐煩)小姐?到底有沒有啊?
小美: 這款 L 型沙發目前最後一張特價 52900,要幫您預訂嗎?
客人:哦?最後一張喔...那...就先訂起來好了!
小明:!!!這麼快就會了?根本是資料庫天才 == b
小明:那我再考你幾題,如果你都會了以後,那我就可以退休了ㄏㄏㄏ
小美:.....
題目
基礎比較運算:
情境 1:單品查詢
客人:「這張北歐風雙人沙發多少錢?」
小美想查:想找到這張沙發的價格和庫存
情境 2:價格比較
客人:「請列出 5000 元以下的櫃子有哪些?」
小美想查:找出櫃子類且價格在 5000 以下的商品
情境 3:庫存確認
客人:「日式雙人床架還有貨嗎?」
小美想查:確認日式雙人床架的庫存狀況
邏輯運算 AND:
情境 4:預算內的商品
客人:「想找 4 萬以下,而且有現貨的沙發」
小美想查:要同時符合:是沙發、4萬以下、有庫存
情境 5:特價且有貨
客人:「沙發有哪些特價且現貨的品項?」
小美想查:要找到沙發類且有特價(原價大於優惠價)且還有庫存的商品
邏輯運算 OR:
情境 6:多分類查詢
客人:「我要找櫃子或桌子」
小美想查:要找出櫃子類或桌子類的商品
情境 7:指定商品
客人:「北歐風雙人沙發和貓抓皮L型沙發哪個還有貨?」
小美想查:要找出這兩張特定沙發的庫存狀況
IN 運算:
情境 8:多分類查詢
客人:「客廳的家具有哪些?我要看沙發、櫃子跟桌子」
小美想查:要找出沙發、櫃子和桌子這三種分類的商品
情境 9:特定商品
客人:「電腦辦公椅和餐椅四入組的價格是多少?」
小美想查:要找出這兩款椅子的價格
BETWEEN:
情境 10:價格區間
客人:「想找 10000 到 20000 之間的商品有哪些?」
小美想查:列出這個價格區間的所有商品
情境 11:庫存區間
主管:「請列出庫存在 5 到 15 之間的商品」
小美想查:列出庫存數量在這個範圍的商品
NOT IN:
情境 12:排除商品
主管:「列出除了沙發和床架以外的商品」
小美想查:要找出不是沙發和床架的商品
更新和刪除:
情境 13:調整價格
主管:「北歐風雙人沙發要調降 2000 元」
小美想查:要如何更新這張沙發的價格
情境 14:更新庫存
主管:「電腦辦公椅進了 5 張」
小美想查:要如何增加這款椅子的庫存數量
情境 15:清除資料
主管:「要清掉兒童床架和電競書桌的資料」
小美想查:要如何刪除這兩項商品
同學出的題目
將庫存最多的椅子類商品,原價打5折促銷
要將庫存最多的「椅子」類商品的原價打5折促銷,可以使用以下 SQL 語法:
但是,PostgreSQL 不允許在 UPDATE
語句中使用 ORDER BY
和 LIMIT
。
因此,我們可以使用子查詢來找出庫存最多的「椅子」類商品的名稱,然後再進行更新:
這樣,程式碼會先找出庫存最多的「椅子」商品名稱,然後將該商品的優惠價設置為原價的 5 折。
我出給下一位同學的題目