本文彙整 MySQL 開發與維運高頻使用的 SQL 語句,涵蓋資料庫/資料表管理、資料增刪改查、進階查詢、使用者權限、備份還原等實戰場景,供快速查閱。
| 操作 | 語句範例 |
|---|---|
| 建立資料庫 | CREATE DATABASE db_name; |
| 刪除資料庫 | DROP DATABASE db_name; |
| 切換資料庫 | USE db_name; |
| 建立資料表 | CREATE TABLE t (id INT PRIMARY KEY AUTO_INCREMENT, name VARCHAR(20)); |
| 複製表結構 | CREATE TABLE new_t LIKE old_t; |
| 複製表結構+資料 | CREATE TABLE new_t AS SELECT * FROM old_t; |
| 刪除資料表 | DROP TABLE t; |
| 新增欄位 | ALTER TABLE t ADD col INT; |
| 新增主鍵/索引 | ALTER TABLE t ADD PRIMARY KEY (id); CREATE INDEX idx_name ON t(col); |
| 建立/刪除視圖 | CREATE VIEW v AS SELECT ...; DROP VIEW v; |
INSERT INTO t (c1, c2) VALUES (v1, v2);DELETE FROM t WHERE 條件;UPDATE t SET c1=v1 WHERE 條件;SELECT * FROM t WHERE c1 LIKE '%値%';ORDER BY c1 DESC, c2 ASC;COUNT/SUM/AVG/MAX/MINLIMIT offset, row_count;UNION (合併去重) / UNION ALL (保留重複)INTERSECT (交集) / EXCEPT (差集) —— MySQL 8.0+ 支援INNER JOIN — 僅返回匹配列。LEFT JOIN — 保留左表所有列。RIGHT JOIN — 保留右表所有列。LEFT JOIN UNION RIGHT JOIN 模擬。WHERE col = (SELECT MAX(x) FROM t)WHERE col IN (SELECT ...)SELECT * FROM (SELECT ... ) AS dt WHERE ...GROUP BY col HAVING COUNT(*) > 1GROUP_CONCAT(col) 顯示分組明細ROW_NUMBER() OVER (PARTITION BY ... ORDER BY ...)、RANK()、LEAD/LAG() 等。DELETE FROM t WHERE id NOT IN (SELECT MAX(id) FROM t GROUP BY col1, col2);
ORDER BY RAND() LIMIT 10 (大表慎用)mysqldump -u root -p db_name > backup.sqlmysql -u root -p db_name < backup.sql 或 Source 指令CREATE USER 'user'@'%' IDENTIFIED BY 'pwd';
GRANT SELECT, INSERT ON db.* TO 'user'@'%'; FLUSH PRIVILEGES;
DESC t; / SHOW CREATE TABLE t;RENAME TABLE old TO new;TINYINT/SMALLINT/MEDIUMINT/INT/BIGINTFLOAT/DOUBLE/DECIMAL(M,D)CHAR(M) 定長, VARCHAR(M) 變長, TEXT/BLOB 長文本/二進位DATE/TIME/DATETIME/TIMESTAMP/YEAR掌握上述語句,足以應對 90% 以上的日常開發與運維場景。建議搭配官方文件深入理解各子句的邊界行為與效能特徵。