MySQL 核心基礎操作速查手冊,涵蓋數據類型選擇、庫表管理、數據操縱、用戶授權、備份恢復,適合初學者快速入門與資深開發者查漏補缺。
| 類型 | 存儲範圍/特點 | 適用場景 |
|---|---|---|
INT[(M)] | 4 字節,-21億~21億 | 主鍵 ID、計數器、狀態碼 |
BIGINT | 8 字節,極大範圍 | 高併發自增主鍵、時間戳毫秒 |
DECIMAL(M,D) | 精確定點數,按字符串存儲 | 金額、價格、比率(禁用 FLOAT/DOUBLE) |
VARCHAR(M) | 變長,1-2 字節長度前綴 + 內容 | 名稱、標題、短文本(M≤255 無額外長度字節) |
TEXT / MEDIUMTEXT / LONGTEXT | 64KB / 16MB / 4GB | 文章內容、日誌、JSON 文檔 |
DATE / DATETIME / TIMESTAMP | 日期 / 日期時間 / 時區感知時間戳 | TIMESTAMP 自動更新、跨時區應用首選 |
ENUM / SET | 枚舉單選 / 集合多選 | 狀態機、標籤系統(值固定少時) |
JSON | 5.7+ 原生類型,二進制存儲 | 半結構化數據、動態屬性、標籤屬性 |
-- 庫操作
SHOW DATABASES;
CREATE DATABASE db_name CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
USE db_name;
DROP DATABASE db_name;
-- 表操作
SHOW TABLES;
DESC table_name; -- 結構
SHOW CREATE TABLE t; -- 完整建表語句
CREATE TABLE t (id INT PRIMARY KEY AUTO_INCREMENT, name VARCHAR(50)) ENGINE=InnoDB;
ALTER TABLE t ADD COLUMN age TINYINT;
DROP TABLE t;
-- 插入
INSERT INTO t (name, age) VALUES ('張三', 25);
INSERT INTO t (name, age) VALUES ('李四', 30), ('王五', 28); -- 批量
-- 查詢
SELECT id, name FROM t WHERE age > 20 ORDER BY id DESC LIMIT 10;
SELECT COUNT(*) FROM t;
SELECT age, COUNT(*) FROM t GROUP BY age;
-- 更新
UPDATE t SET age = 26 WHERE name = '張三';
-- 刪除
DELETE FROM t WHERE name = '張三';
TRUNCATE TABLE t; -- 快速清空表(重置自增ID、不觸發觸發器)
-- 8.0 推薦:創建用戶 + 授權分離
CREATE USER 'app_user'@'10.0.%' IDENTIFIED BY 'StrongPass#2024';
GRANT SELECT, INSERT, UPDATE, DELETE ON mydb.* TO 'app_user'@'10.0.%';
FLUSH PRIVILEGES;
-- 5.7 兼容:GRANT 隱式創建
GRANT SELECT, INSERT ON mydb.* TO 'app_user'@'10.0.%' IDENTIFIED BY 'StrongPass#2024';
-- 查看權限
SHOW GRANTS FOR 'app_user'@'10.0.%';
-- 撤銷權限
REVOKE DELETE ON mydb.* FROM 'app_user'@'10.0.%';
-- 修改密碼 (8.0)
ALTER USER 'app_user'@'10.0.%' IDENTIFIED BY 'NewStrongPass#2024';
最小權限原則:僅授予必要庫、必要表、必要操作、必要 IP 段。禁用 'user'@'%' (任意主機) 與 GRANT ALL。
# 邏輯備份 (mysqldump)
mysqldump -u root -p --single-transaction --routines --triggers --events mydb > backup.sql
mysqldump -u root -p --all-databases > all.sql
# 恢復
mysql -u root -p mydb < backup.sql
mysql -u root -p < all.sql
# 物理備份 (Percona XtraBackup - 熱備不阻塞)
xtrabackup --backup --target-dir=/backup/full --user=root --password=xxx
xtrabackup --prepare --target-dir=/backup/full