本文轉載自 cnblogs 博主 q1ng,針對 MySQL 日常開發與運維高頻指令進行分類彙總,包含資料匯出入、服務控制、庫表結構操作、資料增刪改查、使用者授權、編碼設定、備份策略等核心內容,適合離線速查與團隊知識庫沉澱。
mysqldump -u user -p --default-character-set=utf8mb4 db > backup.sqlmysqldump -u user -p db table > table.sqlmysqldump -u user -p -d --add-drop-table db > schema.sqlUSE db; SOURCE backup.sql;mysql -u user -p -D db < backup.sqlnet start mysql / net stop mysqlsystemctl start mysqld / /etc/init.d/mysqld startmysql -h host -u user -p (本機可省 -h)EXIT / QUIT / \q| 操作 | SQL 範例 |
|---|---|
| 建庫 (指定字符集) | CREATE DATABASE db CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci; |
| 刪庫 | DROP DATABASE db; |
| 切換庫 | USE db; |
| 顯示所有表 | SHOW TABLES; |
| 建表 (含主鍵自增) | CREATE TABLE t (id INT PRIMARY KEY AUTO_INCREMENT, name VARCHAR(20) NOT NULL, age TINYINT DEFAULT 0); |
| 檢視表結構 | DESC t; 或 SHOW COLUMNS FROM t; |
| 新增欄位 | ALTER TABLE t ADD email VARCHAR(50); |
| 刪除表 | DROP TABLE t; |
| 清空表 (保留結構) | TRUNCATE TABLE t; |
| 重命名表 | RENAME TABLE old TO new; |
INSERT INTO t (name, age) VALUES ('A', 1), ('B', 2);SELECT * FROM t WHERE age > 1 ORDER BY age DESC LIMIT 3;UPDATE t SET age = age + 1 WHERE name = 'A';DELETE FROM t WHERE age < 2;UPDATE t SET name = REPLACE(name, 'A', 'C');LOAD DATA LOCAL INFILE 'data.txt' INTO TABLE t FIELDS TERMINATED BY '\t';CREATE USER 'dev'@'%' IDENTIFIED BY 'Pwd123!';GRANT SELECT, INSERT, UPDATE, DELETE ON dev_db.* TO 'dev'@'%';GRANT SELECT ON dev_db.logs TO 'dev'@'%';FLUSH PRIVILEGES;SHOW GRANTS FOR 'dev'@'%';REVOKE DELETE ON dev_db.* FROM 'dev'@'%';ALTER USER 'dev'@'%' IDENTIFIED BY 'NewPwd456!';DROP USER 'dev'@'%';SHOW VARIABLES LIKE 'character%';SET NAMES utf8mb4;my.cnf / my.ini
[client]
default-character-set=utf8mb4
[mysqld]
character-set-server=utf8mb4
collation-server=utf8mb4_general_ci
重啟服務生效。
INNER/LEFT/RIGHT JOIN ... ON ...WHERE col IN (SELECT ...), EXISTS (SELECT ...)UNION / UNION ALL (MySQL 8.0+ 支援 INTERSECT/EXCEPT)GROUP BY col HAVING COUNT(*) > 1LIMIT offset, rowsROW_NUMBER() OVER (PARTITION BY dept ORDER BY salary DESC)--single-transaction --master-data=2 --routines --triggers 保證一致性。log_bin, binlog_format=ROW) 配合 mysqlbinlog 實現 PITR (時間點恢復)。SHOW PROCESSLIST; / KILL id;SHOW ENGINE INNODB STATUS; (鎖/死鎖分析)EXPLAIN SELECT ...; (執行計畫)SHOW INDEX FROM t; (索引狀態)SELECT TABLE_NAME, ROUND((DATA_LENGTH+INDEX_LENGTH)/1024/1024,2) AS 'MB' FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='db'; (表大小)來源註明:https://www.cnblogs.com/q1ng/p/4474501.html。建議配合官方文件 dev.mysql.com/doc 深入理解各參數邊界與版本差異。