一、資料庫與資料表基本操作 (DDL)
| 操作 | 語法範例 |
| 建立資料庫 | CREATE DATABASE db_name; |
| 刪除資料庫 | DROP DATABASE db_name; |
| 備份資料庫 | BACKUP DATABASE pubs TO DISK='c:\backup\pubs.bak'; |
| 建立資料表 | CREATE TABLE t (id INT PRIMARY KEY, name VARCHAR(50) NOT NULL); |
| 依現有表建表 | CREATE TABLE new_t LIKE old_t; (MySQL) / SELECT * INTO new_t FROM old_t WHERE 1=0; (SQL Server) |
| 刪除資料表 | DROP TABLE t; |
| 新增欄位 | ALTER TABLE t ADD col VARCHAR(100); |
| 新增/刪除主鍵 | ALTER TABLE t ADD PRIMARY KEY (id); / DROP PRIMARY KEY; |
| 建立/刪除索引 | CREATE [UNIQUE] INDEX idx_name ON t(col); / DROP INDEX idx_name ON t; |
| 建立/刪除視圖 | CREATE VIEW v AS SELECT ...; / DROP VIEW v; |
二、基本資料操作 (DML)
-- 查詢
SELECT * FROM t WHERE col LIKE '%keyword%';
-- 新增
INSERT INTO t (col1, col2) VALUES (val1, val2);
-- 刪除
DELETE FROM t WHERE condition;
-- 更新
UPDATE t SET col1 = val1 WHERE condition;
三、彙總與排序
SELECT COUNT(*) AS total FROM t;
SELECT SUM(col) AS sum_val, AVG(col) AS avg_val, MAX(col) AS max_val, MIN(col) AS min_val FROM t;
SELECT * FROM t ORDER BY col1, col2 DESC;
四、進階集合運算
UNION:合併結果並去重;UNION ALL 保留重複。
EXCEPT (SQL Server) / MINUS (Oracle):第一個結果集減去第二個。
INTERSECT:取交集。
- 參與運算的查詢欄位數、型別必須一致。
五、外部聯結
LEFT JOIN:保留左表所有列。
RIGHT JOIN:保留右表所有列。
FULL JOIN:保留雙方所有列。
六、子查詢與相關子查詢
-- 標量子查詢
SELECT * FROM t WHERE col = (SELECT MAX(col) FROM t);
-- EXISTS 相關子查詢
SELECT * FROM t1 WHERE EXISTS (SELECT 1 FROM t2 WHERE t2.id = t1.id);
七、常用系統函數 (SQL Server)
- 字串:
LEN, SUBSTRING, REPLACE, UPPER, LOWER, LTRIM, RTRIM, CHARINDEX, PATINDEX
- 日期:
GETDATE, DATEADD, DATEDIFF, DATEPART, DATENAME, CONVERT
- 轉換:
CAST, CONVERT
- 系統:
DB_NAME(), OBJECT_NAME(), COL_NAME(), SUSER_NAME()
八、交易控制
BEGIN TRAN;
UPDATE ...; INSERT ...; DELETE ...;
IF @@ERROR <> 0 ROLLBACK TRAN ELSE COMMIT TRAN;
-- 或使用 TRY/CATCH (SQL 2005+)
BEGIN TRY
BEGIN TRAN; ... COMMIT TRAN;
END TRY
BEGIN CATCH
ROLLBACK TRAN; THROW;
END CATCH