🗂️ MySQL 速查命令手册

🔌 一、连接 / 帮助 / 退出

功能命令
连接到 MySQLbash mysql -h 主机 -u 用户名 -p
显示帮助sql help; sql \h
退出客户端sql quit; / sql exit; / sql \q
显示连接状态与版本sql \s sql STATUS; sql SELECT VERSION();

🗃️ 二、数据库(Schema)操作

功能命令
列出所有数据库sql SHOW DATABASES;
创建数据库sql CREATE DATABASE [IF NOT EXISTS] db_name [CHARACTER SET utf8mb4] [COLLATE utf8mb4_unicode_ci];
删除数据库sql DROP DATABASE [IF EXISTS] db_name;
切换当前数据库sql USE db_name;
查看当前数据库sql SELECT DATABASE();
查看建库语句sql SHOW CREATE DATABASE db_name;
💡 推荐字符集:utf8mb4 + 排序规则:utf8mb4_unicode_ci

📋 三、表(Table)操作

功能命令
列出当前库所有表sql SHOW TABLES;
查看表结构sql DESC table_name; sql SHOW COLUMNS FROM table_name;
查看建表语句(DDL)sql SHOW CREATE TABLE table_name\G
创建表sql CREATE TABLE table_name ( id INT PRIMARY KEY, name VARCHAR(100) ) ENGINE=InnoDB CHARSET=utf8mb4;
删除表sql DROP TABLE [IF EXISTS] table_name;
清空表(保留结构)sql TRUNCATE TABLE table_name;
修改表结构sql -- 添加列 ALTER TABLE t ADD COLUMN email VARCHAR(255); -- 修改类型 ALTER TABLE t MODIFY COLUMN name VARCHAR(200); -- 重命名列 ALTER TABLE t CHANGE old_name new_name VARCHAR(200); -- 删除列 ALTER TABLE t DROP COLUMN col; -- 重命名表 ALTER TABLE t RENAME TO new_t; -- 添加索引 ALTER TABLE t ADD INDEX idx_name (col1, col2); -- 删除索引 ALTER TABLE t DROP INDEX idx_name;
💡 TRUNCATEDELETE FROM table 更快,但不可回滚(非事务安全)

📊 四、数据操作(DML:增删改查)

功能命令
插入单行sql INSERT INTO t (a, b) VALUES (1, 'x');
插入多行sql INSERT INTO t (a, b) VALUES (1,'x'), (2,'y'), (3,'z');
基础查询sql SELECT a, b FROM t;
带条件查询sql SELECT * FROM t WHERE a > 10;
排序sql SELECT * FROM t ORDER BY a DESC, b ASC;
限制结果数量sql SELECT * FROM t LIMIT 10; -- 前10行 SELECT * FROM t LIMIT 5, 10; -- 跳过5行,取10行
分组聚合sql SELECT dept, COUNT(*) FROM emp GROUP BY dept;
去重sql SELECT DISTINCT status FROM orders;
更新数据sql UPDATE t SET name = 'Alice' WHERE id = 1;
删除数据(带条件)sql DELETE FROM t WHERE created_at < '2020-01-01';
删除全部数据sql DELETE FROM t; (可回滚)
sql TRUNCATE TABLE t; (不可回滚,更快)

🔍 五、索引 / 约束 / 外键

功能命令 / 说明
创建普通索引sql CREATE INDEX idx_name ON t(col1, col2);
删除索引sql DROP INDEX idx_name ON t;
添加主键 / 唯一键sql ALTER TABLE t ADD PRIMARY KEY(id); ALTER TABLE t ADD UNIQUE uk_email (email);
添加外键(需 InnoDB)sql ALTER TABLE orders ADD CONSTRAINT fk_user FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE;
查看索引sql SHOW INDEX FROM t;
查看约束(含外键)sql SHOW CREATE TABLE t; 或查询:
sql SELECT * FROM information_schema.KEY_COLUMN_USAGE WHERE TABLE_SCHEMA = 'db_name' AND REFERENCED_TABLE_NAME IS NOT NULL;
⚠️ 外键仅在 InnoDB 引擎中支持

🔐 六、事务 / 锁 / 并发控制

功能命令
开始事务sql START TRANSACTION; sql BEGIN;
提交sql COMMIT;
回滚sql ROLLBACK;
保存点sql SAVEPOINT sp1; ROLLBACK TO sp1; RELEASE SAVEPOINT sp1;
锁表(读/写)sql LOCK TABLES t READ; -- 或 WRITE
解锁sql UNLOCK TABLES;
设置隔离级别sql SET SESSION TRANSACTION ISOLATION LEVEL REPEATABLE READ;
查看 InnoDB 状态sql SHOW ENGINE INNODB STATUS\G
💡 MySQL 默认隔离级别:REPEATABLE READ

👤 七、用户 / 权限管理

功能命令
创建用户sql CREATE USER 'dev'@'%' IDENTIFIED BY 'pass123';
修改密码sql ALTER USER 'dev'@'%' IDENTIFIED BY 'newpass';
删除用户sql DROP USER 'dev'@'%';
授予权限sql GRANT SELECT, INSERT ON mydb.* TO 'dev'@'%';
撤销权限sql REVOKE INSERT ON mydb.* FROM 'dev'@'%';
刷新权限sql FLUSH PRIVILEGES;
查看用户权限sql SHOW GRANTS FOR 'dev'@'%';
💡 'user'@'%' 表示允许从任意主机连接

🧩 八、视图 / 存储过程 / 触发器 / 函数

功能命令示例
创建视图sql CREATE VIEW v_active_users AS SELECT id, name FROM users WHERE active = 1;
删除视图sql DROP VIEW IF EXISTS v_active_users;
查看视图sql SHOW CREATE VIEW v_active_users\G
创建存储过程sql DELIMITER $$ CREATE PROCEDURE GetUsers() BEGIN SELECT * FROM users; END$$ DELIMITER ;
删除存储过程sql DROP PROCEDURE IF EXISTS GetUsers;
创建函数sql DELIMITER $$ CREATE FUNCTION AddOne(x INT) RETURNS INT DETERMINISTIC BEGIN RETURN x + 1; END$$ DELIMITER ;
创建触发器(示例)sql CREATE TRIGGER tr_log_update BEFORE UPDATE ON users FOR EACH ROW BEGIN INSERT INTO user_log VALUES (OLD.id, NOW()); END;
查看触发器sql SHOW TRIGGERS LIKE 'users'\G
💡 修改分隔符(DELIMITER)是为了避免 ; 被提前解析

💾 九、备份 / 恢复 / 导入导出

功能命令(终端执行)
导出单库bash mysqldump -u root -p mydb > mydb.sql
导出所有库bash mysqldump -u root -p --all-databases > all.sql
导出指定表bash mysqldump -u root -p mydb t1 t2 > tables.sql
导入 SQLbash mysql -u root -p mydb < mydb.sql
客户端内导入sql source /path/to/file.sql;
仅导出结构(无数据)bash mysqldump -u root -p --no-data mydb > schema.sql
仅导出数据(无建表语句)bash mysqldump -u root -p --no-create-info mydb t > data.sql
💡 生产环境建议加 --single-transaction --routines --triggers

🛠️ 十、状态 / 配置 / 调优 / 诊断

功能命令 / 查询
查看系统变量sql SHOW VARIABLES LIKE 'max_connections';
查看运行状态sql SHOW GLOBAL STATUS LIKE 'Threads_connected';
查看错误/警告sql SHOW WARNINGS;
查看活跃连接sql SHOW FULL PROCESSLIST;
终止某个连接sql KILL 12345;
分析查询执行计划sql EXPLAIN SELECT * FROM t WHERE id = 1;
启用慢查询日志(临时)sql SET GLOBAL slow_query_log = 'ON'; SET GLOBAL long_query_time = 1;
查看元数据(列、索引等)sql SELECT * FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = 'mydb';
查看 InnoDB 死锁信息sql SHOW ENGINE INNODB STATUS\G (查看 LATEST DETECTED DEADLOCK)

添加新评论