MySQL 命令速查表

MySQL 最常用命令的快速参考,按功能分组,适合日常开发查阅

连接与数据库管理

mysql -u root -p 本地连接 MySQL
mysql -h host -P 3306 -u user -p dbname 连接远程数据库
SHOW DATABASES; 查看所有数据库
CREATE DATABASE db CHARACTER SET utf8mb4; 创建数据库
USE database_name; 切换数据库
DROP DATABASE IF EXISTS db; 删除数据库
status; 查看当前连接状态

表操作

SHOW TABLES; 查看当前库所有表
DESC table_name; 查看表结构
SHOW CREATE TABLE table_name; 查看建表语句
CREATE TABLE t (id BIGINT PRIMARY KEY AUTO_INCREMENT, ...); 创建表
ALTER TABLE t ADD COLUMN col VARCHAR(50); 添加列
ALTER TABLE t MODIFY COLUMN col VARCHAR(100); 修改列类型
ALTER TABLE t DROP COLUMN col; 删除列
DROP TABLE IF EXISTS t; 删除表
TRUNCATE TABLE t; 清空表数据(重置自增ID)

CRUD 操作

INSERT INTO t (col1, col2) VALUES (v1, v2); 插入单条
INSERT INTO t (col) VALUES (v1), (v2), (v3); 批量插入
SELECT col1, col2 FROM t WHERE condition; 条件查询
UPDATE t SET col = val WHERE condition; 条件更新
DELETE FROM t WHERE condition; 条件删除
INSERT INTO t ... ON DUPLICATE KEY UPDATE ...; 插入或更新
REPLACE INTO t (col1, col2) VALUES (v1, v2); 替换插入

查询技巧

SELECT * FROM t ORDER BY col DESC LIMIT 10; 排序 + 分页
SELECT col, COUNT(*) FROM t GROUP BY col; 分组统计
SELECT * FROM t1 JOIN t2 ON t1.id = t2.fk_id; 内连接
SELECT * FROM t1 LEFT JOIN t2 ON t1.id = t2.fk_id; 左连接
SELECT DISTINCT col FROM t; 去重查询
SELECT * FROM t WHERE col IN (SELECT ...); 子查询
SELECT * FROM t WHERE col LIKE '%keyword%'; 模糊查询
SELECT IFNULL(col, '默认值') FROM t; 空值处理

用户与权限

CREATE USER 'user'@'%' IDENTIFIED BY 'pass'; 创建用户
GRANT SELECT, INSERT ON db.* TO 'user'@'%'; 授权
REVOKE DELETE ON db.* FROM 'user'@'%'; 撤销权限
SHOW GRANTS FOR 'user'@'%'; 查看权限
ALTER USER 'user'@'%' IDENTIFIED BY 'newpass'; 修改密码
DROP USER 'user'@'%'; 删除用户
FLUSH PRIVILEGES; 刷新权限

备份与恢复

mysqldump -u root -p --single-transaction db > backup.sql 备份数据库
mysqldump -u root -p --all-databases > all.sql 备份所有库
mysqldump -u root -p db table1 table2 > tables.sql 备份指定表
mysqldump --no-data db > schema.sql 只备份结构
mysql -u root -p db < backup.sql 恢复数据库
source /path/to/backup.sql 在 MySQL 内导入

性能优化

EXPLAIN SELECT ...; 分析查询执行计划
SHOW INDEX FROM table_name; 查看表索引
CREATE INDEX idx_col ON t(col); 创建索引
SHOW FULL PROCESSLIST; 查看当前连接和查询
KILL process_id; 终止指定查询
ANALYZE TABLE t; 更新表统计信息
SET GLOBAL slow_query_log = ON; 开启慢查询日志
SHOW STATUS LIKE 'Threads%'; 查看线程状态