歡迎來到資料庫的世界!

你好!今天我們要一起探索如何使用資料庫來組織、儲存及尋找資訊。試想一下你常用的影音串流應用程式,例如 Netflix 或 Spotify。它是如何精確地知道你上次看到哪裡,或者你的「Chill」播放清單裡有哪些歌的?答案就是資料庫!在本章中,我們將學習數據如何轉化為資訊,以及如何使用一種名為 SQL 的特殊語言來與這些數位檔案櫃進行對話。如果剛開始覺得有點技術性也不用擔心,我們會一步一步慢慢來!

5.1 數據與資訊

在建立資料庫之前,我們需要先了解放入其中的是什麼。

數據 (Data) 與資訊 (Information)

數據由原始的事實和數字組成,單獨來看並沒有太多意義。例如,「21」這個數字僅是數據。
資訊則是當你處理這些數據並賦予其上下文後所得到的結果。如果我告訴你「氣溫是 21°C」,這就是資訊,因為它傳達了有用的訊息!

比喻:將數據想像成院子裡散落的磚塊,而資訊則是利用這些磚塊蓋好的房子。

結構化與非結構化數據

結構化數據非常有組織,能完美地放入包含行與列的表格中(如 Excel 試算表),電腦能輕鬆進行搜尋。
非結構化數據則是「混亂的」。它包含電子郵件、照片、影片或社群媒體貼文等。它們無法放入簡單的表格中,因此分析起來困難得多。

有意義資訊的價值

各機構都樂於從數據中提取有意義的資訊,因為這能幫助他們做出更好的決策。例如,超市可以查看銷售數據,發現冰淇淋在晴天時賣得更好。這讓他們能在熱浪來襲前預先補貨!

快速回顧:
數據:原始事實(例如:「75」)。
資訊:處理過的數據(例如:「你的考試成績是 75%」)。
結構化:有組織的(表格)。
非結構化:無組織的(影片/電子郵件)。

5.2 結構化數據:關聯式資料庫

關聯式資料庫 (Relational Database) 是一種將數據儲存在相互關聯的表格中的資料庫類型。這讓我們不必重複輸入相同的資料。

表格的剖析

表格 (Tables):組織成行 (rows) 和列 (columns) 的數據集合。
欄位 (Fields):這是「列」的直向部分。每個欄位包含一個特定的資訊項目,例如「名字」或「電話號碼」。
紀錄 (Records):這是「行」的橫向部分。一筆紀錄包含關於單一個人、項目或事件的所有數據。
範例:在「學生」表格中,一筆紀錄會是關於你個人的所有資訊。一個欄位則會是名單中每位學生的「出生日期」。

成功的關鍵:鍵值 (Keys)

為了保持一切井然有序,我們使用特殊的鍵值 (Keys)
主鍵 (Primary Key, PK):用於唯一識別每一筆紀錄的 ID。沒有兩筆紀錄可以擁有相同的 PK。範例:你的護照號碼或學生編號。
外鍵 (Foreign Key, FK):來自另一個表格的主鍵,出現在目前的表格中以建立關聯。
組合鍵 (Composite Key):當單一欄位不足以作為唯一識別時,結合兩個或多個欄位來創建一個唯一的 ID。

實體與關係

實體 (Entity) 就是我們想要儲存資料的「事物」(如學生、書籍或汽車)。我們使用關係 (Relationships) 來連結這些實體:
1. 一對一 (1:1):一個人擁有一本護照。
2. 一對多 (1:M):一位母親可以有多個孩子。這是最常見的類型!
3. 多對多 (M:M):許多學生可以修讀許多不同的科目。

你知道嗎? 實體關係圖 (ERD) 是一張展示這些表格如何連接的繪圖,就像是你數據的地圖!

重點總結:表格使用欄位(直行)和紀錄(橫列)。主鍵使紀錄具有唯一性,而外鍵則將表格連結在一起。

5.3 結構化查詢語言 (SQL)

SQL(常讀作 "Sequel")是我們用來與資料庫「溝通」的語言。我們用它來尋找、新增或修改資料。

常見的 SQL 指令

1. SELECT:用於「選取」你想查看的數據。
2. CREATE TABLE:建立一個全新的表格。你需要選擇數據類型(例如用於數字的 Integer 或用於文字的 Varchar)。
3. INSERT:新增一筆紀錄。
4. UPDATE (Amend):修改現有的資訊。
5. DELETE:永久刪除一筆紀錄。(使用這個指令要小心!)

連結表格

有時你需要的資訊分散在兩個不同的表格中。我們使用 JOIN 將這些表格暫時黏合在一起,以便將它們視為一個整體來讀取。我們也可以使用 UNION 將兩個不同查詢的結果合併成一個列表。

萬用字元:搜尋的「秘技」

如果你不確定確切的搜尋目標,可以使用萬用字元 (Wildcards)
% (百分比):代表零個或多個字元。搜尋 "S%" 會找到 "Sam"、"Sarah" 和 "Steven"。
_ (底線):代表恰好一個字元。搜尋 "H_t" 會找到 "Hat" 和 "Hot"。

組織查詢結果

ORDER BY:對你的結果進行排序(例如 A 到 Z 或從小到大)。
GROUP BY:將相同的數據歸類到組別中(例如「按居住城市將所有學生分組」)。
COUNT:一個用來計算有多少紀錄符合搜尋條件的函數。

避免常見錯誤:
別忘了子查詢 (Subquery) 只是「查詢中的查詢」。電腦會先解決內層的部分,然後使用該答案來解決外層的部分。這就像數學運算中要先處理括號內部的邏輯一樣!

最終總結:
資料庫將原始數據轉化為有用的資訊。我們使用關聯式資料庫將數據儲存在連結的表格中。為了管理這些資料,我們使用 SQL 指令,如 SELECTINSERTUPDATE。掌握了這些,你就掌握了現代資訊科技系統的核心!