## 1. 資料庫介紹
資料庫是用來儲存和管理資料的工具,常見的類型有以下幾種:
* **SQLite**
一種輕量級的嵌入式資料庫,適合小型專案或單機應用。
不需要伺服器,資料直接存儲在檔案中。
優點:簡單易用、無需安裝伺服器、佔用資源少。
用途:手機應用、桌面應用、快速測試。
* **MySQL**
一種關聯式資料庫管理系統,需要伺服器支持。
適合中大型專案,支援多用戶並發操作。
優點:穩定、性能優越、廣泛支持。
用途:網站後端、企業應用系統。
* **NoSQL(如 MongoDB)**
非關聯式資料庫,使用文件、鍵值對等格式儲存資料。
適合處理結構多變或非結構化資料。
優點:擴展性高、靈活性強。
用途:即時數據分析、大規模分散式應用。
## 2. SQLite 資料庫結構
* **資料庫 (Database)**
SQLite 的資料庫是一個單一的檔案,所有資料都儲存在這個檔案中
ex: **my_database.db**
特點:資料庫檔案可以直接拷貝、備份,跨平台兼容性強。
* **資料表 (Table)**
資料表是儲存數據的核心單位,每個資料表類似於一個 **Excel 的工作表**,由行 (row) 和列 (column) 組成。
結構:
列 (Column):定義資料的屬性或欄位,例如 id, name, email。
行 (Row):表示具體的數據,例如一名用戶的資訊。

* **標題的資料型態** (Data Types)
**INTEGER**:整數,例如 1, 42。
**REAL**:浮點數,例如 3.14, 2.71。
**TEXT**:文字,例如 'Hello', 'SQLite'。
**BLOB**:二進制資料,例如圖片、音頻文件。
**NULL**:空值。
* **主鍵 (Primary Key)**
每個資料表通常會有一個Primary Key來唯一標識每一行數據。SQLite 支援自動生成主鍵值。
ex: 上面圖片中的**id**
## 3.創建資料庫
```
import sqlite3
# 連接 SQLite 資料庫(若無檔案則會自動建立)
conn = sqlite3.connect("sample.db")
cursor = conn.cursor()
# 建立資料表
cursor.execute("""
CREATE TABLE IF NOT EXISTS users (
id INTEGER PRIMARY KEY,
name TEXT NOT NULL,
email TEXT UNIQUE NOT NULL
)
""")
```
執行後可以看到資料夾下多了一個sample.db

### DB Browser for SQLite
一般來說需要在終端機輸入sqlite的語法才能查看資料庫的內容
但如果使用DB Browser就可以直接將資料庫可視化並做一些操作
https://sqlitebrowser.org/dl/
### 點選開啟資料庫後選擇剛才新增的db

### 點選"瀏覽資料"後就可以看到我們剛才新增的資料庫內容
但因為一開始只有先將標題的名字和資料型態定義好,內容需要再依據自己想要的資料做存放

## 4. 讀取excel資料到資料庫
### excel中的資料:

### 將excel和db的名字和路徑改成自己的樣子
Ex:

先在終端機中安裝pandas
`pip install pandas openpyxl`
```
import sqlite3
import pandas as pd
# 讀取 Excel 檔案
excel_file = "sample.xlsx"
df = pd.read_excel(excel_file)
# 連接 SQLite 資料庫(若無檔案則會自動建立)
conn = sqlite3.connect("sample.db")
cursor = conn.cursor()
# 建立資料表
cursor.execute("""
CREATE TABLE IF NOT EXISTS users (
id INTEGER PRIMARY KEY,
name TEXT NOT NULL,
email TEXT UNIQUE NOT NULL
)
""")
# 插入資料到資料表
for _, row in df.iterrows():
cursor.execute(
"""
INSERT OR IGNORE INTO users (id, name, email)
VALUES (?, ?, ?)
""",
(row["ID"], row["Name"], row["Email"]),
)
# 確認變更
conn.commit()
conn.close()
print("資料已成功插入資料庫")
```
最後到DB Brower中可以看到資料已經新增上去了:
如果沒有的話,可以按一下重新整理的按鈕
