歡迎來到資料庫解決方案!
在本章中,我們將探索數位世界是如何追蹤所有事物的。從你最喜愛的串流服務記錄你上次看到哪一集,到學校管理成千上萬名學生的資料,資料庫(Databases)都是背後默默運作的秘密引擎。如果一開始覺得有點生硬別擔心——我們會用日常生活的例子,將這些概念拆解得淺顯易懂!
5.1 數據與資訊
在我們建立資料庫之前,需要先了解我們放入其中的是什麼。人們常把「數據」(Data)和「資訊」(Information)當作同義詞,但在資訊科技(IT)領域中,它們有非常明確的定義。
數據 vs. 資訊
數據(Data)是指原始的事實與數字。它本身並沒有太大的意義。試想一下放在檯面上的原始食材(麵粉、雞蛋、糖)。
資訊(Information)則是經過處理、整理或結構化,使其具備用途的數據。這就像是你用那些食材烤出來的美味蛋糕!
例子:數字「190524」是原始的數據。如果我們告訴你這是一個日期(19/05/24),它就變成了資訊。
結構化數據 vs. 非結構化數據
數據來自許多來源,通常分為兩類:
• 結構化數據(Structured Data):這種數據組織得非常有條理。它能完美地放入包含行列的表格中。想像一下 Excel 試算表或數碼通訊錄。
• 非結構化數據(Unstructured Data):這是「雜亂」的數據。它沒有預先定義的格式。例子包括電子郵件、社交媒體貼文、影片和音訊檔。電腦要自動分析這些資料會困難得多。
為什麼這很有價值?
對於組織來說,從數據中提取有意義的資訊就像淘金一樣。這有助於他們做出更精準的決策。例如,超級市場可以觀察人們購買商品的數據,從而得到關於哪些商品最受歡迎的資訊,進而幫助他們決定該補充哪些庫存。
快速複習:數據是原始的;資訊是經過處理且有用的。結構化數據整潔;非結構化數據雜亂。
5.2 結構化數據與關聯式資料庫
當我們擁有大量結構化數據時,我們會使用關聯式資料庫(Relational Database)。為什麼呢?因為它能保持組織有序,並且讓我們不必重複輸入相同的內容!
關聯式資料庫的結構
想像資料庫是一組資料表(Tables)的集合。每個資料表由以下組成:
• 欄位(Fields):這是直向的「行」(Columns)。每個欄位儲存一項具體的細節(例如「名字」或「電話號碼」)。
• 紀錄(Records):這是橫向的「列」(Rows)。一筆紀錄代表一個完整的「實體」(例如一位學生或一筆訂單)。
成功的「鍵值」(Keys)
為了保持一切連結,我們使用特殊類型的鍵值:
• 主鍵(Primary Key):每筆紀錄的唯一識別碼。就像你的身份證號碼一樣,表格中沒有兩個人可以使用相同的號碼。
• 外鍵(Foreign Key):這是來自一個資料表的主鍵,出現在另一個資料表中以連結兩者。它就像一個將學生與其班級連結起來的「指標」。
• 複合鍵(Composite Key):有時候,單一欄位不足以成為唯一識別碼。複合鍵會同時使用兩個或多個欄位來建立唯一的 ID。
實體與關聯
在資料庫中,實體(Entity)是一個我們想儲存相關資料的「事物」(例如客戶、產品或汽車)。關聯描述了這些事物如何連結:
• 一對一(1:1):一個人擁有一個護照。一個護照只屬於一個人。
• 一對多(1:M):一位母親可以有多個孩子,但每個孩子只有一位親生母親。(這是最常見的類型!)
• 多對多(M:M):多名學生修讀多門學科。一門學科有多名學生修讀。
實體關聯圖(ERDs)
ERD 就像資料庫的地圖。它使用方框來表示實體,並用線條來顯示關聯。當你看到一條帶有短線的線,代表「一」。如果線條末端展開成「鳥爪」(crow's foot)形狀,則代表「多」。
重點總結:資料表透過鍵值連結。主鍵是「唯一 ID」,外鍵是「連結」。
5.3 結構化查詢語言(SQL)
SQL(通常讀作 "Sequel")是我們用來與資料庫對話的語言。它讓我們可以提出問題(查詢)並變更數據。
建立與管理資料表
在新增數據之前,我們需要建立儲存它的「容器」:
• CREATE TABLE:用於建立新表,並定義每個欄位的數據類型(如 Text、Integer 或 Date)。
• INSERT:向資料表中新增一筆全新的紀錄。
• AMEND (UPDATE):更改現有的數據(例如更新客戶地址)。
• DELETE:永久刪除一筆紀錄。
尋找數據(查詢)
最常見的指令是 SELECT。它遵循一個簡單的模式:
SELECT [你想要的欄位]
FROM [哪個資料表]
WHERE [規則/條件]
ORDER BY [字母或數字順序]
進階 SQL 工具
有時候我們需要進階操作:
• JOIN:用於在查詢中透過鍵值將兩個資料表連結起來。
• UNION:將兩次不同查詢的結果合併成一個列表。
• 萬用字元(Wildcards):% 符號代表「任意數量的字元」,而 _ 符號則代表「剛好一個字元」。
例子:WHERE Name LIKE 'S%' 將會找到 "Sam"、"Sarah" 和 "Steven"。
函數
SQL 甚至可以幫你進行數學運算!
• COUNT:告訴你有多少筆紀錄符合你的搜尋結果。
• GROUP BY:將相同的數據歸類(例如將所有學生按「年級」分組)。
• ORDER BY:對結果進行排序(A-Z 或 高-低)。
別擔心,如果程式碼一開始看起來很奇怪!只需記住:SELECT 欄位,FROM 資料表,WHERE 滿足規則。這就像給電腦一組非常具體的指令。
總結清單:
• 你能解釋數據與資訊的區別嗎?
• 你知道主鍵與外鍵的區別嗎?
• 你能識別 1:M 的關聯嗎?
• 你知道 SELECT 語句的基本結構嗎?
避免常見錯誤:使用 DELETE 時千萬不要忘記 WHERE 子句!如果你只輸入 DELETE FROM Students,電腦將會刪除學校裡的每一位學生!務必保持明確。