歡迎來到關聯式數據庫與結構化查詢語言(SQL)的世界!

哈囉,未來的電腦科學家們!本章節將全面介紹 關聯式數據庫(Relational Databases)SQL(結構化查詢語言,Structured Query Language)。別擔心,名字聽起來很複雜,其實 SQL 就是一套用來與關聯式數據庫進行互動和查詢的標準語言。

關聯式數據庫與鍵(Keys)

關聯式數據庫 將數據儲存在多個相關聯的 資料表(Tables,亦稱為關聯 relations)中,以消除 數據冗餘(Data redundancy,即重複數據)並維持 數據一致性(Data consistency)

資料表 (Table):保存關於單一實體(例如:學生 Students課程 Courses)的數據。
記錄 (Record) 或稱列 (Row):一筆完整的數據條目,包含該實體的所有屬性。
欄位 (Field) 或稱行 (Column):實體的特定屬性(例如:StudentNameDateOfBirth)。
主鍵 (Primary Key):能唯一識別資料表中每一筆記錄的欄位(或欄位組合)。
外鍵 (Foreign Key):某個資料表中的欄位,它連結到另一個資料表的主鍵,從而在兩者之間建立關聯。

數據庫架構標記法 (Database Schema Notation)

在數據庫設計中,資料表會使用標準標記法表示,其中主鍵會加上 底線

Student(StudentID, StudentName, DateOfBirth, CourseID)
Course(CourseID, CourseTitle, TeacherName)

在此範例中,StudentIDStudent 的主鍵,CourseIDCourse 的主鍵,而 Student 內部的 CourseID 則作為 外鍵,將每位學生與其課程連結起來。

第一節:什麼是 SQL 及其用途?

SQL(結構化查詢語言)是一種聲明式語言,用於建立、查詢以及操作儲存在關聯式數據庫管理系統(RDBMS)中的數據。

SQL 指令通常分為兩大類:

1. 數據定義語言 (Data Definition Language, DDL)

DDL 指令用於定義或移除數據庫結構,例如建立或刪除資料表。

2. 數據操作語言 (Data Manipulation Language, DML)

DML 指令用於操作儲存在這些結構 內部 的數據——包括查詢、新增、修改和刪除記錄。

第二節:數據定義語言 (DDL) 指令

1. 建立資料表:CREATE TABLE

此指令用於建立一個新的資料表,包括設定其欄位名稱及數據類型(例如:INTEGERTEXT)。

CREATE TABLE Books (
    BookID INTEGER,
    Title TEXT,
    Author TEXT,
    PublicationYear INTEGER
);

2. 刪除資料表:DROP TABLE

此指令會永久刪除整個資料表以及其中儲存的所有數據。

DROP TABLE Books;

第三節:查詢數據 (DML)

1. 核心查詢結構:SELECTFROM

SELECT 指定要擷取的欄位(行)。
FROM 指定從哪個(些)資料表中擷取數據。
• 星號 (*) 作為萬用字元,代表選取所有欄位。

SELECT StudentName, Email
FROM Students;

2. 過濾記錄:WHERE

WHERE 子句使用比較運算子來過濾查詢結果:=><>=<=,以及 <>(或 !=)。

條件中的文字常值必須用單引號包起來(例如:'London')。

SELECT *
FROM Students
WHERE Grade = 'A';

3. 邏輯運算子:ANDORNOT

多個搜尋條件可以在 WHERE 子句中組合使用:

SELECT StudentName
FROM Students
WHERE Grade = 'A' AND City = 'London';

4. 排序記錄:ORDER BY

ORDER BY 子句用於將輸出結果按遞增(ASC,預設)或遞減(DESC)順序進行排序。

SELECT StudentName, Grade
FROM Students
ORDER BY StudentName ASC;

5. 多資料表查詢(合併兩個資料表)

在考試題目中,查詢可能需要從 最多兩個資料表 中擷取數據。若要合併資料表,請在 FROM 子句中列出兩個資料表,並在 WHERE 子句中將一個資料表的主鍵與另一個資料表的外鍵進行配對。

SELECT Student.StudentName, Course.CourseTitle
FROM Student, Course
WHERE Student.CourseID = Course.CourseID;

第四節:修改數據 (DML)

1. 新增記錄:INSERT INTO

在現有的資料表中插入一筆新記錄。

INSERT INTO Books (BookID, Title, Author)
VALUES (101, 'The Great Adventure', 'A. N. Author');

2. 修改記錄:UPDATE

修改現有的數據。使用 SET 來定義新值,並使用 WHERE 指定要更新哪些記錄。

UPDATE Students
SET Grade = 'A*'
WHERE StudentID = 42;

警告: 如果遺漏了 WHERE 子句,將會更新資料表中的 每一筆記錄

3. 移除記錄:DELETE FROM

根據特定條件從資料表中刪除記錄。

DELETE FROM Students
WHERE City = 'London';

警告: 如果遺漏了 WHERE 子句,將會移除所有記錄,但資料表結構仍會保留。

重點總結清單:
SELECT ... FROM ... WHERE ... ORDER BY 用於查詢(單一資料表或跨兩個資料表)。
INSERT INTO ... VALUES ... 用於新增列。
UPDATE ... SET ... WHERE ... 用於變更現有數據。
DELETE FROM ... WHERE ... 用於移除列。