資料庫是什麼?

資料庫,說穿了就是「存資料的地方」。你可能會想,那跟把東西存在檔案裡有什麼不一樣?差別在於資料庫可以幫你快速找到你要的東西、確保資料不會亂掉、而且很多人同時存取也不會打架。

你一定用過 Excel 吧?一個工作表,上面有很多欄位,每一列是一筆資料。資料庫的概念其實很像,只是它更強大、更可靠,而且可以處理幾百萬甚至幾億筆資料,速度還不會太慢。

你用過 Excel 嗎?資料庫就是更強大、更可靠的 Excel。它能處理百萬筆資料、支援多人同時存取,而且不會像 Excel 一樣動不動就當掉。

SQL vs NoSQL:兩大陣營

資料庫的世界基本上分成兩大類:SQL 和 NoSQL。這不是在問你「要不要學 SQL」(SQL 一定要學),而是在說資料庫的架構方式不同。

SQL 資料庫像是整理好的 Excel 表格——每個欄位都定義好了,資料要乖乖照格式放。NoSQL 資料庫比較像 JSON 檔案——結構很彈性,想加什麼欄位就加,不用事先規劃好。

SQL NoSQL
結構 固定欄位,像表格 彈性結構,像文件
彈性 低,改結構要遷移 高,隨時加欄位
適合場景 金融、電商、關聯資料 即時通訊、日誌、快速原型
代表 PostgreSQL, MySQL MongoDB, Redis

大部分情況?選 PostgreSQL 就對了。它功能強大、社群活躍、免費開源,從小專案到大系統都撐得住。不知道選什麼的時候,選它不會錯。

常見的資料庫一覽

資料庫 類型 適合場景
PostgreSQL 全能型 大部分場景,特別是需要複雜查詢的
MySQL 最普及 中小型網站,WordPress 預設用這個
MongoDB 彈性高 快速開發、結構常變動的專案
Redis 超快 快取、Session、排行榜
Elasticsearch 搜尋專用 全文檢索、日誌分析
SQLite 輕量 手機 App、小工具、本地開發

新手該從哪個開始?

如果你是新手,建議從 PostgreSQL 或 MySQL 開始。兩個都是 SQL 資料庫,學會一個,另一個也差不多會了。SQL 語法是通用的,在哪個資料庫都能用。

先學會這幾個基本操作,你就能應付大部分的需求了:

SELECT

查資料。「把所有訂單列出來」就是一個 SELECT。

INSERT

新增資料。使用者註冊的時候,就是在 INSERT 一筆新的使用者資料。

UPDATE

修改資料。改密碼、改暱稱,都是 UPDATE。

DELETE

刪除資料。使用的時候要特別小心,刪了就回不來了(除非你有備份)。

另外,搞懂幾個重要的概念:資料表(table)就是一張表格,欄位(column)就是表格的標題列,資料列(row)就是每一筆資料,主鍵(primary key)是每筆資料的身分證字號,外鍵(foreign key)是用來連結不同表格的橋樑。

總結

你可以做的作品

  • 設計電商資料表 用戶、商品、訂單的關聯設計
  • SQL 練習 用 PostgreSQL 寫基本的 CRUD 和 JOIN
  • Redis 快取實作 把常用查詢結果存到 Redis
  • 資料遷移腳本 練習把 CSV 匯入資料庫

需要具備的觀念

  • SQL vs NoSQL 的差異和適用場景
  • 資料表設計和正規化
  • Primary Key 和 Foreign Key
  • 索引的原理和使用時機
  • ACID 特性
  • 讀寫分離和連接池

其他主題

AI 怎麼用? → SEO 入門 → 程式怎麼學? → 工程師怎麼成長? → 專案怎麼管? →