🗄️ 資料庫基礎學習指南

← 返回學習中心

什麼是關聯式資料庫?

關聯式資料庫使用表格(Table)來組織資料,表格由列(Row)和欄位(Column)組成,不同表格之間可以透過外來鍵建立關聯。

users 表格
┌─────┬──────────┬─────────────┐
│ id │ name │ email │
├─────┼──────────┼─────────────┤
│ 1 │ Alice │ alice@abc │
│ 2 │ Bob │ bob@abc │
└─────┴──────────┴─────────────┘

SQL 基本語法

1. 查詢資料 - SELECT

-- 查詢所有欄位
SELECT * FROM users;

-- 查詢特定欄位
SELECT name, email FROM users;

-- 條件查詢
SELECT * FROM users WHERE age >= 18;

-- 排序
SELECT * FROM users ORDER BY created_at DESC;

-- 限制筆數
SELECT * FROM users LIMIT 10;

-- 聚合函數
SELECT COUNT(*) FROM users;
SELECT AVG(age) FROM users;
SELECT SUM(salary) FROM users;
SELECT department, COUNT(*) FROM users GROUP BY department;

2. 插入資料 - INSERT

-- 插入單筆
INSERT INTO users (name, email, age) VALUES ('John', '[email protected]', 25);

-- 插入多筆
INSERT INTO users (name, email) VALUES 
    ('Alice', '[email protected]'),
    ('Bob', '[email protected]');

3. 更新資料 - UPDATE

-- 更新資料
UPDATE users SET age = 26 WHERE name = 'John';

-- 更新多個欄位
UPDATE users SET age = 27, email = '[email protected]' WHERE id = 1;

4. 刪除資料 - DELETE

-- 刪除資料
DELETE FROM users WHERE id = 1;

-- 刪除所有資料(保留結構)
DELETE FROM users;

JOIN 語法

INNER JOIN:只返回兩表匹配的記錄

LEFT JOIN:返回左表所有記錄及匹配的右表記錄

RIGHT JOIN:返回右表所有記錄及匹配的左表記錄

FULL OUTER JOIN:返回兩表所有記錄
-- INNER JOIN
SELECT u.name, o.order_date, o.total
FROM users u
INNER JOIN orders o ON u.id = o.user_id;

-- LEFT JOIN(即使沒有訂單也要顯示用戶)
SELECT u.name, o.order_date, o.total
FROM users u
LEFT JOIN orders o ON u.id = o.user_id;

資料庫正規化

1NF - 第一正規化

每個欄位只能有單一值,不可再有重複群組

2NF - 第二正規化

在 1NF 基礎上,所有非主鍵欄位必須完全依賴主鍵

3NF - 第三正規化

在 2NF 基礎上,非主鍵欄位不可依賴其他非主鍵欄位

BCNF

所有候選鍵都必須能唯一識別記錄

索引(Index)

索引是資料庫中用於加速資料查詢的資料結構。

-- 建立索引
CREATE INDEX idx_users_email ON users(email);

-- 複合索引
CREATE INDEX idx_users_name_age ON users(name, age);

-- 唯一索引
CREATE UNIQUE INDEX idx_users_phone ON users(phone);

ACID 特性

🚀 前往測驗