本文整理一套針對 MySQL 的基礎 SQL 練習,涵蓋 DDL、DML、聚合查詢、分頁限制等高頻操作,並對比 SQL Server 差異,適合初學者快速上手。
| 英文 | 中文 |
|---|---|
| Data / Database / RDBMS | 數據 / 數據庫 / 關係數據庫管理系統 |
| GRANT / REVOKE / DENY | 授權 / 取消權限 / 拒絕權限 |
| Transaction / Trigger | 事務 / 觸發器 |
| Primary Key / Foreign Key / Identity | 主鍵 / 外鍵 / 標識列 |
CREATE TABLE student (
學號 INT,
姓名 VARCHAR(10),
年齡 INT,
性別 VARCHAR(4),
家庭住址 VARCHAR(50),
聯系電話 VARCHAR(11)
);
ALTER TABLE student ADD COLUMN 學歷 VARCHAR(6);
ALTER TABLE student DROP COLUMN 家庭住址; -- 注意用 DROP 而非 DELETE
INSERT INTO student (學號,姓名,年齡,性別,聯系電話,學歷) VALUES
(1,'A',22,'男','123456','小學'),
(2,'B',21,'男','119','中學'),
(3,'C',23,'男','110','高中'),
(4,'D',18,'女','114','大學');
UPDATE student SET 學歷='大專' WHERE 聯系電話 LIKE '11%';
DELETE FROM student WHERE 姓名 LIKE 'C%' AND 性別='男';
-- 年齡<22 且 學歷=大專
SELECT 姓名,學號 FROM student WHERE 年齡<22 AND 學歷='大專';
-- 分頁:MySQL 用 LIMIT,SQL Server 用 TOP
SELECT * FROM student ORDER BY 年齡 DESC LIMIT 0, 2; -- 前 2 筆
-- 近似「前 25%」需動態計算:LIMIT 0, (SELECT COUNT(*)*0.25 FROM student)
-- 分組聚合
SELECT 性別, AVG(年齡) AS 平均年齡 FROM student GROUP BY 性別;
AVG/SUM/MAX/MIN:平均/和/最大/最小COUNT(*):全部行數(含 NULL)COUNT(col):非 NULL 行數LIMIT offset, rows vs TOP n PERCENT / OFFSET ... FETCHAUTO_INCREMENT vs IDENTITY(1,1)CONCAT() vs +建議在真實庫中跑通上述語句,再嘗試將練習遷移至 PostgreSQL 或 SQLite,加深對標準 SQL 的理解。