整理最常用的 SQL 基礎操作語句,適合快速查閱與入門參考。
-- 全欄位查詢
SELECT * FROM table1 WHERE 條件;
-- 指定欄位
SELECT col1, col2 FROM table1 WHERE 條件;
-- 模糊查詢
SELECT * FROM table1 WHERE col1 LIKE '%關鍵字%';
-- % 任意長度字串,_ 單一字元,[] 字元範圍 (SQL Server)
-- 排序
SELECT * FROM table1 ORDER BY col1 ASC, col2 DESC;
-- ASC 升序 (預設),DESC 降序
-- 插入單筆
INSERT INTO table1 (col1, col2) VALUES (值1, 值2);
-- 插入多筆 (標準 SQL / MySQL / PostgreSQL)
INSERT INTO table1 (col1, col2) VALUES
(值1, 值2), (值3, 值4), (值5, 值6);
-- 更新
UPDATE table1 SET col1 = 新值 WHERE 條件;
-- 刪除
DELETE FROM table1 WHERE 條件;
-- ⚠️ 無 WHERE 會刪除全表!
| 函數 | 說明 | 範例 |
|---|---|---|
| COUNT(*) | 統計行數 (含 NULL) | SELECT COUNT(*) AS total FROM table1 |
| COUNT(col) | 統計非 NULL 個數 | SELECT COUNT(email) FROM users |
| SUM(col) | 數值加總 | SELECT SUM(amount) FROM orders |
| AVG(col) | 平均值 | SELECT AVG(score) FROM exams |
| MAX(col) | 最大值 | SELECT MAX(price) FROM products |
| MIN(col) | 最小值 | SELECT MIN(price) FROM products |
-- GROUP BY 分組統計
SELECT category, COUNT(*), AVG(price)
FROM products GROUP BY category;
-- HAVING 分組後過濾 (WHERE 無法用聚合函數)
SELECT category, COUNT(*)
FROM products GROUP BY category HAVING COUNT(*) > 10;
-- 分頁 (MySQL/PostgreSQL/SQLite)
SELECT * FROM table1 LIMIT 10 OFFSET 20; -- 第 3 頁,每頁 10 筆
-- 分頁 (SQL Server 2012+)
SELECT * FROM table1 ORDER BY id OFFSET 20 ROWS FETCH NEXT 10 ROWS ONLY;
-- 去重
SELECT DISTINCT col1 FROM table1;
-- 子查詢
SELECT * FROM table1 WHERE id IN (SELECT id FROM table2 WHERE condition);
-- 關聯查詢 (INNER JOIN)
SELECT t1.name, t2.order_no
FROM table1 t1 INNER JOIN table2 t2 ON t1.id = t2.t1_id;
-- 字串
CONCAT(str1, str2), SUBSTRING(str, pos, len), TRIM(str), REPLACE(str, from, to)
-- 日期
NOW(), CURDATE(), DATE_ADD(date, INTERVAL n DAY), DATEDIFF(date1, date2)
DATE_FORMAT(date, '%Y-%m-%d %H:%i:%s')
START TRANSACTION;
-- SQL 操作
COMMIT; -- 或 ROLLBACK;