本文匯總 MySQL 表操作、索引、視圖、函數、預處理、事務、存儲過程、觸發器、常用 SQL 技巧、優化步驟、大數據導入、服務器參數調優等核心知識點,適合作為速查手冊。
CREATE TABLE t3 LIKE t1; -- 復制結構
INSERT INTO t3 SELECT * FROM t1; -- 復制數據
-- 普通索引
ALTER TABLE t1 ADD INDEX idx_name (name);
-- 唯一索引
ALTER TABLE t1 ADD UNIQUE uk_name (name);
-- 主鍵索引(需自增)
ALTER TABLE t1 ADD PRIMARY KEY (id);
ALTER TABLE t1 MODIFY id INT UNSIGNED NOT NULL AUTO_INCREMENT;
-- 查看/刪除
SHOW INDEX FROM t1;
ALTER TABLE t1 DROP INDEX idx_name;
-- 刪除主鍵需先去自增
ALTER TABLE t1 MODIFY id INT UNSIGNED NOT NULL;
ALTER TABLE t1 DROP PRIMARY KEY;
CREATE VIEW v_t1 AS SELECT * FROM t1 WHERE id > 4 AND id < 11;
DROP VIEW v_t1;
CONCAT, LCASE, UCASE, LENGTH, TRIM, REPLACE, SUBSTRING, REPEAT, SPACEBIN, CEILING, FLOOR, MAX, MIN, SQRT, RANDCURDATE, CURTIME, NOW, UNIX_TIMESTAMP, FROM_UNIXTIME, WEEK, YEAR, DATEDIFFPREPARE stmt1 FROM 'SELECT * FROM t1 WHERE id > ?';
SET @i = 5;
EXECUTE stmt1 USING @i;
DEALLOCATE PREPARE stmt1;
SET autocommit = 0;
DELETE FROM t1 WHERE id > 5;
ROLLBACK; -- 或 COMMIT;
-- 保存點
SAVEPOINT p1;
INSERT ...; SAVEPOINT p2;
ROLLBACK TO p1;
見「MySQL 視圖、存儲過程、觸發器、游標入門實戰指南」。
TRUNCATE TABLE t; -- 歸 1
-- 或
ALTER TABLE t AUTO_INCREMENT = 1;
REGEXP '^linux'、REGEXP '@163[.,]com$'(比 LIKE 耗資源)。ORDER BY RAND() LIMIT 3。NULL 組)。BIT_OR/BIT_AND 對二進制位做 OR/AND 統計。? contents, ? functions, ? regexp。SHOW GLOBAL STATUS LIKE 'Com_%' 統計增刪改查頻率;Innodb_rows_% 看行級操作量。EXPLAIN / DESC 定位慢查詢:關注 type、key、rows、Extra(Using temporary/filesort)。LIKE 'abc%' 用索引、OR 兩側都需索引。ANALYZE TABLE 更新統計、OPTIMIZE TABLE 整理碎片。DISABLE/ENABLE KEYS + LOAD DATA;InnoDB 按主鍵序 + autocommit=0 + unique_checks=0。INSERT ... VALUES (),(),() 減少往返。ORDER BY NULL。NOT IN (sub) -> LEFT JOIN ... IS NULL,雙表都走索引。LOCK TABLE t READ:共享鎖,可讀不可寫。LOCK TABLE t WRITE:排他鎖,僅持有者可讀寫。UNLOCK TABLES 釋放。備份用 mysqldump --single-transaction(InnoDB)避免鎖表。| 項目 | 關鍵配置 |
|---|---|
| 字符集統一 | [client] default-character-set=utf8 / [mysqld] character-set-server=utf8 collation-server=utf8_general_ci |
| Binlog | log-bin=mysql-bin |
| 慢查詢 | slow_query_log=ON long_query_time=2 slow_query_log_file=... |
| Socket | 客戶端/服務端 socket=/tmp/mysql.sock 一致 |
| Root 密碼重置 | mysqld_safe --skip-grant-tables -> UPDATE user -> 重啟 |
MySQL 掌握路徑:基礎語法 -> 索引原理 -> EXPLAIN 分析 -> 改寫優化 -> 架構拆分 -> 參數調優。將本筆記作為工具書,遇到問題查對應章節,持續精進。