---
# System prepended metadata

title: HW1 Report
tags: [DB]

---

---
tags: DB
---
<style>
    H1{
        text-align: center;  /* 題目置中 */
    }
    H4{
        text-align: right;  /* 題目置中 */
    }
    blockquote > P {    /* Blockquote 取消第一行兩格*/
        text-indent: 0;
    }
    .markdown-body > h4 {   /* 讓限制那行離上面近一點 */
        padding: 0;
        margin: 0;
    }
    .markdown-body > h1 {
        border-bottom: 0;
        padding: 0;

    }
</style>


# HW1 Report
#### 409410050 資工二 王謙靜
## MYSQL
### 如何建立 MySQL database
1. 打開CMD，移動路徑到```C:\Program Files\MySQL\MySQL Server 8.0\bin```
2. 輸入指令```mysql --user=root --password```，並輸入密碼登入，登入成功後會看到提示文字變成```mysql>```，代表進入操作資料庫的模式
3. 輸入指令```CREATE DATABASE db_name;```，其中```db_name```為database的名稱
4. 以下為此過程的截圖
![database setting](https://i.imgur.com/yZEkojQ.png)

5. 檢查database有誰：`show databases;`
### 如何建立 MySQL table
1. 輸入```use db_name;```，來使用```db_name```這個datebase
2. 建立table的語法為
    ```sql
    CREATE TABLE 資料表名 (欄位1 資料型態, 欄位2 資料型態, ......);
    ```
    下方指令可用來設定一個名為`Product`的資料庫，指定其有四個欄位分別為`pNo, pName, unitPrice, category`，後面的`varchar`和`int`為欄位的data type`varchar(n)`為一個長度為`n`字串，`int`為整數，而在`pNo`後方的`PRIMARY KEY`則表示將`pNo`設為primary key

    ```sql
    CREATE TABLE `Product` (
      `pNo` varchar(7) PRIMARY KEY,
      `pName` varchar(50),
      `unitPrice` int,
      `category` varchar(50));
    ```
3. 將資料插入table的語法為
   ```sql
   INSERT INTO 資料表(欄位1,欄位2,......)
   VALUES(值1,值2,......),(值1,值2,......), ........;
   ```
   下方指令可用來將資料存入table(已存入第一筆資料為例)，`Product`為table名稱，後方的括號依序為其欄位名稱，`VALUES`後接的是要存入資料的值
    ```sql
    INSERT INTO Product (pNo, pNamem, unitPrice, category)
    VALUES('b30999', '資料庫理論與實務', 500, 'Book');
    ```
    也可以一次存入多筆資料
    ```sql
    INSERT INTO Product (pNo, pNamem, unitPrice, category)
    VALUES('b30999', '資料庫理論與實務', 500, 'Book'),
    ('d11222', '任賢齊專輯三', 300, 'CD');
    ```
4. 以下為此過程的截圖
![](https://i.imgur.com/cXeu1cb.png)

    ![](https://i.imgur.com/HZyY2zH.png)
### 顯示各table的完整內容/每筆資料
輸入指令來檢查目前table的資料

```sql
SELECT * FROM db_name.table_name;
```

**product:**
![](https://i.imgur.com/SaQ7HmR.png)
**record:**
![](https://i.imgur.com/4dWdS3u.png)

###  MySQL查詢結果的完整截圖
查詢1：找出定價400元以下所有CD。列出商品名稱、定價。
    ![](https://i.imgur.com/sTBsUzj.png)
查詢2：找出所有定價比所有書籍都高的商品。
    ![](https://i.imgur.com/VzTXG1v.png)
查詢3：找出最優惠的交易記錄。列出交易編號、該筆交易得到的優惠金額。
    ![](https://i.imgur.com/zbgPIGD.png)


## MongoDB
### 如何建立 MongoDB database
1. 在CMD輸入 `mongo`，進入mongoDB的操作模式
2. 輸入 `use db_name`，選擇使用的database名稱，若db_name不存在則會新增一個database
3. 使用指令 `show dbs` 檢查是否成功新增(若database還沒有任何操作，則指令 `show dbs` 出現的結果將不會有該database，可在有insert之後查看是否有新增database)
4. 以下為此過程的截圖
![](https://i.imgur.com/2e2qlnG.png)

### 如何建立 MongoDB table
在mongoDB中insert會進一個table有兩種情況:若table已存在，insert會直接將資料放入table中；若table不存在，insert則會新增一個table在database中，之後再insert資料進table中。

insert 一筆資料
```sql
db.table_name.insertOne( {欄位1: 值1, 欄位二: 值2, ...} )
```
insert 多筆資料
```sql
db.table_name.insertMany([
    {欄位1: 值1, 欄位二: 值2, ...},
    {欄位1: 值1, 欄位二: 值2, ...}, ...
])
```
**Product**
![](https://i.imgur.com/tpT7Mwu.png)

**Record**
![](https://i.imgur.com/iTaaeqm.png)



### table的完整內容
查看database裡的table
```sql
show collections
```

查看table內容
```sql
db.table_name.find()
```
![](https://i.imgur.com/J5mnFCo.png)

### MongoDB查詢結果
查詢1：找出定價400元以下所有CD。列出商品名稱、定價。
![](https://i.imgur.com/L7jS10C.png)
查詢2：找出所有定價比所有書籍都高的商品。
![](https://i.imgur.com/tWgQvhg.png)
查詢3：找出最優惠的交易記錄。列出交易編號、該筆交易得到的優惠金額。
![](https://i.imgur.com/7Y6deYb.png)


## 狀況排解
### 中文字產生'?'
![問題1-2](https://i.imgur.com/ul2TOo9.png)
**解決:**
在CMD輸入指令，將CMD輸入時的中文編碼從```Big5```改成```utf-8```
```
chcp 65001
```

## Reference

[mysql語法-1](https://www.cynet.com.tw/learning/MySql/Page04.htm)
[mysql語法-2](https://www.mysql.tw/2015/05/select-sql.html)
[環境變數設定](https://www.architectryan.com/2018/03/17/add-to-the-path-on-windows-10/)
[mongodb-1](https://docs.mongodb.com/manual/reference/method/db.collection.insertMany/)
[mongodb-2](https://zh-tw.coderbridge.com/series/800ffff9f7524d35ac6ecc51fffda4b9/posts/fccb25a652444dfda38629965eac7c7d)
[mongodb-3](http://dog0416.blogspot.com/2015/08/databasemongodb-1-crud-operation-1.html)
[mongodb-4](https://docs.mongodb.com/manual/reference/method/db.dropDatabase/)
