歡迎來到資料庫的世界!
你好!今天我們要一起探索如何使用資料庫來組織、儲存及尋找資訊。試想一下你常用的影音串流應用程式,例如 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 指令,如 SELECT、INSERT 和 UPDATE。掌握了這些,你就掌握了現代資訊科技系統的核心!