歡迎來到資料庫的世界!

在本章中,我們將一起探索電腦如何儲存和組織海量的資訊。試想一下你最喜歡的串流應用程式、學校的註冊系統,或者是一個網上商店,它們都有一個共同點:它們都使用資料庫來追蹤和管理所有數據。

如果起初覺得這些內容有點深奧也不用擔心,我們會透過學校圖書館或電子遊戲的物品清單等簡單例子來拆解這些概念。讓我們開始吧!

1. 到底什麼是資料庫?

簡單來說,資料庫(Database)是一個持久且有組織的資料儲存庫。所謂「持久」(Persistent)是指即使電腦關機後,資料依然會被保存下來。

雖然你可以用一個簡單的文字檔來記錄朋友的電話號碼,但資料庫的功能強大得多,它能讓你快速地搜尋、排序和連結各種資訊。

關聯式資料庫(Relational Databases)

你在考試中需要重點掌握的資料庫類型稱為關聯式資料庫

關聯式資料庫是指使用多個表格(Table)來儲存資料的系統。這些表格透過特殊的「鍵」(Keys)相互連結。這比把所有東西塞進一個巨大、混亂的試算表要有效率得多!

快速回顧:
資料庫是一個有組織的資料集合。關聯式資料庫則使用了多個相互連結的表格。

2. 資料庫表格的結構

要理解資料庫,你需要先了解表格是如何建構的。讓我們想像一個名為「學生」(Students)的表格。

欄位(Field)與記錄(Record)

  • 欄位(Field):這是表格中的單一「直行」(Column)。它儲存了特定類別的資訊。在我們的「學生」表格中,欄位可能是「名字」(FirstName)、「姓氏」(Surname)和「出生日期」(DateOfBirth)。
  • 記錄(Record):這是表格中的單一「橫列」(Row)。它包含了關於某個特定項目或人員的所有數據。一項記錄就是關於名為「Alex Smith」的學生的所有資訊。
  • 表格(Table):由所有記錄欄位組成的整個集合。

資料類型(Data Types)

就像程式設計一樣,資料庫中的每個欄位都必須具備一種資料類型。這能告訴資料庫該預期什麼樣的數據(例如:用於姓名的「文字」、用於門牌號碼的「整數」,或是用於生日的「日期」)。

記憶小撇步:圖書館類比
想像一下圖書館。表格就像是「小說類」的書架。記錄是架上的一本書。而欄位則是關於這本書的特定細節,比如「書名」或「作者」。

3. 資料庫的「鍵」(Keys)

在關聯式資料庫中,我們使用兩種特殊的「鍵」來保持結構井然有序並相互連結。

主鍵(Primary Key)

每個表格都必須有一個主鍵。這是一個能唯一識別每一筆記錄欄位

想一想:兩名學生可能名字相同(都是「John Smith」)。為了區分他們,學校會給每位學生一個獨一無二的「學生編號」(Student ID)。這個編號就是主鍵,因為不會有兩個人擁有相同的 ID。

外鍵(Foreign Key)

外鍵是一個表格中的欄位,它同時是另一個表格的主鍵。它被用來將兩個表格「連結」在一起。

例子:如果我們有一個「成績」(Results)表格,我們不想每次學生參加考試時都重複輸入他們的全名和地址。相反,我們只需將「學生編號」(來自「學生」表格的主鍵)放入「成績」表格中。這樣一來,兩個表格就成功連結了!

常見錯誤提醒:
學生常誤以為主鍵必須是數字。雖然通常是這樣(例如 ID),但最核心的要求是它必須對於每一列都是唯一(Unique)的!

4. 為何要使用關聯式資料庫?

為什麼不把所有東西都放在一個大表格裡就好?關聯式資料庫能幫助我們避免兩個大問題:

  1. 數據冗餘(Data Redundancy):這是指同樣的資料被儲存了多次。如果我們只有一個大表格,每次學生借書我們都可能要重新輸入一次地址。在關聯式資料庫中,我們只需在「學生」表格中儲存一次即可。
  2. 數據不一致(Data Inconsistency):當冗餘資料在一個地方更新了,卻忘了在另一個地方更新時,就會發生這種情況。如果學生搬家了,但我們在五個不同的地方記錄了他的地址,我們很可能會漏掉其中一處。透過只儲存一次,我們能確保資料的準確性。

重點總結:
關聯式資料庫能節省空間(減少冗餘)並保持資料準確(防止不一致)。

5. 與資料庫對話:SQL

SQL(結構化查詢語言,Structured Query Language)是用來與資料庫「溝通」的語言。你需要知道如何使用它來查詢、新增、修改和刪除資訊。

擷取資料(SELECT 陳述式)

要查找資訊,我們使用以下結構:
SELECT [你想查詢的欄位]
FROM [來自哪個表格]
WHERE [必須滿足的條件]
ORDER BY [如何排序]

例子:查找所有 11 年級學生的名字,並按姓氏排序:
SELECT FirstName, Surname
FROM Students
WHERE YearGroup = 11
ORDER BY Surname ASC (ASC 代表升序,即 A 到 Z)

新增資料(INSERT 陳述式)

要新增一筆記錄:
INSERT INTO Students (FirstName, Surname, YearGroup)
VALUES ('Sam', 'Jones', 10)

編輯和刪除資料

要修改現有的資料:
UPDATE Students
SET YearGroup = 11
WHERE Surname = 'Jones'

要移除資料:
DELETE FROM Students
WHERE StudentID = 502

你知道嗎?
WHERE 子句非常重要。如果你在 DELETE 陳述式中忘記包含 WHERE 子句,你可能會不小心刪除資料庫中的所有人!請務必仔細檢查你的條件。

快速總結

  • 資料庫:一個持久、有組織的資料儲存庫。
  • 表格:由記錄(橫列)和欄位(直行)組成。
  • 主鍵:記錄的唯一識別編號。
  • 外鍵:用於連結兩個表格的關鍵欄位。
  • 冗餘:重複儲存相同的資料(這是不好的!)。
  • SQL:用於管理資料庫的語言(SELECT, INSERT, UPDATE, DELETE)。