Untitled


<aside> 🍔

目錄 - 觀念簡介


</aside>

其他技術

任意門

上課範例城市

練習解答

網頁技術考題與練習題

資料庫期中考練習

資料庫期中考 - 考試重點

資料庫 115 期中考 - employees

後端與資料庫

🐬 MySQL・🌶️ Flask・🚀 Django・🍃 SpringBoot・🐘 PHP・⚡️ FastAPI・ 🟩 Express

後端與資料庫


<aside> 📌

以下是本書七個主題的簡介:每個技術是什麼、和同類技術差在哪裡、專案大概長什麼樣子,以及官方資源。

</aside>

🐬 MySQL

MySQL 是一套關聯式資料庫管理系統(RDBMS),1995 年發布,現在由 Oracle 維護,有開源的社群版(Community Edition)可以免費使用。「關聯式」的意思是:資料會整理成一張張像 Excel 的資料表(Table),每一列(Row)是一筆資料、每一欄(Column)是一種屬性;表跟表之間可以透過主鍵(Primary Key)和外鍵(Foreign Key)建立關係,例如「訂單」表會記錄這筆訂單是哪一位「會員」下的。

我們用 SQL(Structured Query Language)這個語言跟資料庫溝通:建立資料表、新增、查詢、修改、刪除資料,都是送一段 SQL 給 MySQL 伺服器執行。

而 MySQL 的預設儲存引擎 InnoDB 支援 Transaction 邏輯控制機制,在這種機制下一連串的操作要嘛全部成功、要嘛全部取消,像轉帳這種「扣款和入帳必須同時成立」的情境就是靠它保護。

不管用 Flask、Django、SpringBoot、PHP 還是 FastAPI,後端最後都要把資料存進資料庫,而 SQL 的觀念在各種關聯式資料庫之間大多通用,所以本書建議先打好 MySQL 的基礎,之後要改學習其他資料庫上手速度也會快很多。

<aside> 🐬

在後端專案裡,通常會把建立資料表的 SQL 檔放在專案裡的資料夾(例如 db 或 migrations),讓每個人都能建出一樣的資料表;連線用的帳號密碼則放在環境變數。

</aside>

資料庫大致分成兩類:關聯式(SQL)資料庫,例如 MySQL、PostgreSQL、SQLite;以及非關聯式(NoSQL)資料庫,例如用「文件」來存資料的 MongoDB。

項目 🐬 MySQL PostgreSQL SQLite MongoDB
類型 關聯式,獨立的資料庫伺服器 關聯式,獨立的資料庫伺服器 關聯式,整個資料庫就是一個檔案,不用開伺服器 文件型(NoSQL),資料存成類似 JSON 的文件
資料結構 先定義好資料表的欄位 先定義好資料表的欄位,支援更多進階型別(如 JSONB、陣列) 先定義好資料表的欄位,型別規則比較寬鬆 不用事先定義欄位,同一個集合裡的文件可以長得不一樣
強項 普及、教學資源多,主機商與雲端幾乎都支援,WordPress 等常見系統的預設選擇 功能完整、嚴謹,擴充套件豐富(如地理資料的 PostGIS) 零設定、輕巧,適合內嵌在 App 或小工具裡 結構彈性大,資料格式常變動時很好調整
要注意 部分進階功能比 PostgreSQL 少 設定與調校的門檻稍高 大量同時寫入時效能有限,不適合多人同時使用的大型網站 跨集合的關聯查詢不如關聯式資料庫直覺