-- 查詢指定欄位
SELECT column_name FROM table_name;
-- 查詢所有欄位
SELECT * FROM table_name;
SELECT column_name FROM table_name WHERE condition;
-- 為運算式/欄位命名,便於應用層引用
SELECT COUNT(*) AS total_rows FROM table_name;
SELECT column_name AS alias_name FROM table_name;
-- 內連接:僅返回雙方匹配列
SELECT a.col1, b.col2
FROM table_a a
JOIN table_b b ON a.common_col = b.common_col;
-- 左外連接:保留左表所有列
SELECT a.col1, b.col2
FROM table_a a
LEFT JOIN table_b b ON a.common_col = b.common_col;
SELECT column_name FROM table_name ORDER BY column_name [ASC|DESC];
-- ASC 升序(預設),DESC 降序
MySQL/PostgreSQL/SQLite:
SELECT * FROM table LIMIT offset, row_count;
SELECT * FROM table LIMIT row_count OFFSET offset;
SQL Server 2012+:
SELECT * FROM table
ORDER BY column_name
OFFSET @offset ROWS FETCH NEXT @page_size ROWS ONLY;
SQL Server 2005-2008 R2:使用 ROW_NUMBER() 視窗函數(參考文章 84245)。
-- 全欄位插入(須符合表定義順序)
INSERT INTO table_name VALUES (val1, val2, ...);
-- 指定欄位插入(推薦,順序不拘、可跳過有預設值欄位)
INSERT INTO table_name (col1, col2, ...) VALUES (val1, val2, ...);
-- 批次插入
INSERT INTO table_name (col1, col2)
VALUES (v1, v2), (v3, v4), ...;
UPDATE table_name
SET col1 = new_val1, col2 = new_val2, ...
WHERE condition; -- 必加 WHERE,否則全表更新!
-- 條件刪除
DELETE FROM table_name WHERE condition;
-- 清空全表(高效、不記錄逐列記錄、可回滾)
DELETE FROM table_name;
-- 或 TRUNCATE TABLE table_name; (不可回滾、重置身分種子、需權限)
SELECT = select,但建議關鍵字大寫、物件名依規範。-- 單行、/* 多行 */。'text',單引號逸出用雙單引號 ''。= NULL 永遠為 UNKNOWN,必須用 IS NULL / IS NOT NULL。BEGIN TRAN / COMMIT / ROLLBACK 確保資料一致性。