# H03_SQL Language
## Basic Operating of Database
:::warning
選擇資料 SELECT column FORM table;
:::
:::warning
鍵入資料 INSERT INTO table (column1, column2) VALUES (value1, value2);
:::
:::warning
刪除資料 DELETE FROM table WHERE your_condition (ex : id = 02);
:::
:::warning
更新資料 UPDATE FROM table (column1, column2) VALUES (value1, value2);
:::
---
## This is a sample1 for tutoring (Backery's menu)
| item | price | date |
| ----------------- | ----- | ---------- |
| Taro Bread | 25 | 2023-03-28 |
| Danish pineapple | 45 | 2023-03-30 |
| Green Onion Bread | 35 | 2023-04-02 |
| Milk Bread | 20 | 2023-03-08 |
| Ice Coffee | 75 | 2023-03-27 |
| Black Tea | 35 | 2023-03-27 |
## This is a sample2 for tutoring (Backery's bread March sales volume)
| item | sales |
| ----------------- | ----- |
| Taro Bread | 12,000 |
| Danish pineapple | 7,800 |
| Green Onion Bread | 5,688 |
| Milk Bread | 25,330 |
| Ice Coffee | 77,112 |
| Black Tea | 66,881 |
---
## SELECT 選擇
>查詢資料表內所有資料
`SELECT * FROM menu;`
| item | price | date |
| ----------------- | ----- | ---------- |
| Taro Bread | 25 | 2023-03-28 |
| Danish pineapple | 45 | 2023-03-30 |
| Green Onion Bread | 35 | 2023-04-02 |
| Milk Bread | 20 | 2023-03-08 |
| Ice Coffee | 75 | 2023-03-27 |
| Black Tea | 35 | 2023-03-27 |
>查詢有條件式單筆資料(有指定欄位、純數字不用單引號)
`SELECT std_name FROM menu WHERE price = 35;`
| item | price | date |
| ----------------- | ----- | ---------- |
| Green Onion Bread | 35 | 2023-04-02 |
| Black Tea | 35 | 2023-03-27 |
`SELECT std_name FROM menu WHERE item = 'Black Tea';`
| item | price | date |
| ----------------- | ----- | ---------- |
| Black Tea | 35 | 2023-03-27 |
>查尋多重條件式
`SELECT * FORM menu WHERE price = 75 AND price = 25;`
| item | price | date |
| ----------------- | ----- | ---------- |
| Taro Bread | 25 | 2023-03-28 |
| Ice Coffee | 75 | 2023-03-27 |
>查詢資料表內唯一的值
`SELECT DISTINCT date FORM menu;`
| date |
| ---------- |
| 2023-03-28 |
| 2023-03-30 |
| 2023-04-02 |
| 2023-03-08 |
| 2023-03-27 |
>查詢資料表涵蓋多重值
`SELECT * FORM menu WHERE date in ('2023-03-28', '2023-04-02');`
| item | price | date |
| ----------------- | ----- | ---------- |
| Taro Bread | 25 | 2023-03-28 |
| Green Onion Bread | 35 | 2023-04-02 |
>查詢有範圍之資料
`SELECT * FORM menu WHERE date BETWEEN '2023-03-01' AND '2023-03-31';`
| item | price | date |
| ----------------- | ----- | ---------- |
| Taro Bread | 25 | 2023-03-28 |
| Danish pineapple | 45 | 2023-03-30 |
| Milk Bread | 20 | 2023-03-08 |
| Ice Coffee | 75 | 2023-03-27 |
| Black Tea | 35 | 2023-03-27 |
>萬用字元使用
`SELECT * FORM menu WHERE item LIKE 'B%'`
`A_Z` `所有以 'A' 起頭,另一個任何值的字原,且以 'Z' 為結尾的字串`
`ABC%` `所有以 'ABC' 起頭的字串`
`%XYZ` `所有以 'XYZ' 結尾的字串`
`%AN%` `所有含有 'AN'這個模式的字串`
`_AN%` `所有第二個字母為 'A' 和第三個字母為 'N' 的字串`
>排序指令(ASC從頭排序、DESC從尾排序)
`SELECT * FORM menu ORDER BY date ASC;`
| item | price | date |
| ----------------- | ----- | ---------- |
| Milk Bread | 20 | 2023-03-08 |
| Ice Coffee | 75 | 2023-03-27 |
| Black Tea | 35 | 2023-03-27 |
| Taro Bread | 25 | 2023-03-28 |
| Danish pineapple | 45 | 2023-03-30 |
| Green Onion Bread | 35 | 2023-04-02 |
`SELECT * FORM menu ORDER BY item DESC;`
| item | price | date |
| ----------------- | ----- | ---------- |
| Green Onion Bread | 35 | 2023-04-02 |
| Danish pineapple | 45 | 2023-03-30 |
| Taro Bread | 25 | 2023-03-28 |
| Ice Coffee | 75 | 2023-03-27 |
| Black Tea | 35 | 2023-03-27 |
| Milk Bread | 20 | 2023-03-08 |
>函數值計算(GROUP BY, SUM() )
`SELECT item, SUM(price) FORM menu GROUP BY item HAVING SUM(price) > 30;`
| item | SUM(price) |
| ----------------- | ----- |
| Green Onion Bread | 35 |
| Danish pineapple | 45 |
| Ice Coffee | 75 |
| Black Tea | 35 |
---
## JOIN 串聯兩個或以上的表格
>INNER JOIN
`SELECT * FROM menu INNER JOIN volume ON menu.item = volume.item;`
>LEFT OUTER JOIN
`SELECT * FROM menu LEFT OUTER JOIN volume ON menu.item = volume.item;`
>RIGHT OUTER JOIN
`SELECT * FROM volume RIGHT OUTER JOIN menu ON menu.item = volume.item;`
>FULL OUTER JOI
`SELECT * FROM menu FULL OUTER JOIN volume ON menu.item = volume.item;`
---
## INSERT 鍵入資料
>INNER INTO
`INSERT INTO menu (item, price, date) VALUES ('Hot dog', 40, '2023-04-01');`
| item | price | date |
| ----------------- | ----- | ---------- |
| Taro Bread | 25 | 2023-03-28 |
| Danish pineapple | 45 | 2023-03-30 |
| Green Onion Bread | 35 | 2023-04-02 |
| Milk Bread | 20 | 2023-03-08 |
| Ice Coffee | 75 | 2023-03-27 |
| Black Tea | 35 | 2023-03-27 |
| Hot dog | 40 | 2023-04-01 |
---
## DELETE 刪除資料
>DELETE FROM
`DELETE FROM menu WHERE item = 'Hot dog' AND item = 'Taro Bread';`
| item | price | date |
| ----------------- | ----- | ---------- |
| Danish pineapple | 45 | 2023-03-30 |
| Green Onion Bread | 35 | 2023-04-02 |
| Milk Bread | 20 | 2023-03-08 |
| Ice Coffee | 75 | 2023-03-27 |
| Black Tea | 35 | 2023-03-27 |
---
## UPDATE 更新資料
>DELETE FROM
`UPDATE menu SET price = 55 WHERE item = 'Danish pineapple';`
| item | price | date |
| ----------------- | ----- | ---------- |
| Danish pineapple | 55 | 2023-03-30 |
| Green Onion Bread | 35 | 2023-04-02 |
| Milk Bread | 20 | 2023-03-08 |
| Ice Coffee | 75 | 2023-03-27 |
| Black Tea | 35 | 2023-03-27 |