---
# System prepended metadata

title: 2024 後端工程師 - 資料庫體驗營

---

# 小節作業：家具店的菜雞銷售奇遇記
## 基礎比較運算：
### 情境 1：單品查詢
客人：「這張北歐風雙人沙發多少錢？」
小美想查：想找到這張沙發的價格和庫存
```SQL=
SELECT name, price, stock    --顯示欄位:商品名、價錢、庫存
FROM products                --要查找的資料表:products
WHERE name = '北歐風雙人沙發' --條件:商品名符合'北歐風雙人沙發'
```

### 情境 2：價格比較
客人：「請列出 5000 元以下的櫃子有哪些？」
小美想查：找出櫃子類且價格在 5000 以下的商品
```SQL=
SELECT *                            --顯示符合類別的資料中所有欄位內容
FROM products
WHERE category='櫃子' AND price<5000 --條件:類別為'櫃子'且價格小於5000
```

### 情境 3：庫存確認
客人：「日式雙人床架還有貨嗎？」
小美想查：確認日式雙人床架的庫存狀況
```SQL=
SELECT name, stock 
FROM products
WHERE name='日式雙人床架'
```

## 邏輯運算 AND：
### 情境 4：預算內的商品 客人：「想找 4 萬以下，而且有現貨的沙發」
小美想查：要同時符合：是沙發、4萬以下、有庫存
```SQL=
SELECT * 
FROM products
WHERE category='沙發' AND price<40000 AND stock > 0
```

### 情境 5：特價且有貨
客人：「沙發有哪些特價且現貨的品項？」
小美想查：要找到沙發類且有特價（原價大於優惠價）且還有庫存的商品
```SQL=
SELECT name, price, discount_price, stock 
FROM products
WHERE category='沙發' AND price>discount_price AND stock>0
```

### 邏輯運算 OR：
情境 6：多分類查詢
客人：「我要找櫃子或桌子」
小美想查：要找出櫃子類或桌子類的商品
```SQL=
SELECT * 
FROM products
WHERE category='櫃子' OR category='桌子'
```

### 情境 7：指定商品
客人：「北歐風雙人沙發和貓抓皮L型沙發哪個還有貨？」
小美想查：要找出這兩張特定沙發的庫存狀況
```SQL=
SELECT name, stock 
FROM products
WHERE name='北歐風雙人沙發' OR name='貓抓皮L型沙發'
```

## IN 運算：
### 情境 8：多分類查詢
客人：「客廳的家具有哪些？我要看沙發、櫃子跟桌子」
小美想查：要找出沙發、櫃子和桌子這三種分類的商品
```SQL=
SELECT name, category 
FROM products
WHERE category IN ('沙發', '櫃子', '桌子')
```

### 情境 9：特定商品
客人：「電腦辦公椅和餐椅四入組的價格是多少？」
小美想查：要找出這兩款椅子的價格
```SQL=
SELECT name, price 
FROM products
WHERE name IN ('電腦辦公椅', '餐椅四入組')
```

## BETWEEN：
### 情境 10：價格區間
客人：「想找 10000 到 20000 之間的商品有哪些？」
小美想查：列出這個價格區間的所有商品
```SQL=
SELECT name, price 
FROM products
WHERE price BETWEEN 10000 AND 20000
```

### 情境 11：庫存區間
主管：「請列出庫存在 5 到 15 之間的商品」
小美想查：列出庫存數量在這個範圍的商品
```SQL=
SELECT name, stock 
FROM products
WHERE stock BETWEEN 5 AND 15
```

## NOT IN：
### 情境 12：排除商品
主管：「列出除了沙發和床架以外的商品」
小美想查：要找出不是沙發和床架的商品
```SQL=
SELECT name, category 
FROM products
WHERE category NOT IN ('沙發', '床架')
```

## 更新和刪除：
### 情境 13：調整價格
主管：「北歐風雙人沙發要調降 2000 元」
小美想查：要如何更新這張沙發的價格
```SQL=
UPDATE products
SET price = price-2000
WHERE name = '北歐風雙人沙發'
```

### 情境 14：更新庫存
主管：「電腦辦公椅進了 5 張」
小美想查：要如何增加這款椅子的庫存數量
```SQL=
UPDATE products
SET stock = stock+5
WHERE name = '電腦辦公椅'
```

### 情境 15：清除資料
主管：「要清掉兒童床架和電競書桌的資料」
小美想查：要如何刪除這兩項商品
```SQL=
DELETE FROM products
WHERE name IN ('兒童床架', '電競書桌')
```

## 額外情境練習
客人 :  請幫我查詢價格 3萬~5萬 的沙發有哪些，並且確認都是有庫存的
```SQL=
SELECT name, price, stock 
FROM products
WHERE stock>0 AND price BETWEEN 30000 AND 50000
```

# Tables 資料表管理
## 關鍵欄位介紹
### 主鍵 (Primary Key. PK)
### 外來鍵 (Foreign Key)

# 小節作業:主鍵、外來鍵、inner join