常用的 MySQL 命令手册
type
status
date
slug
summary
tags
category
icon
password
一、连接与退出 MySQL
命令 | 描述 | 示例 |
mysql -u [用户名] -p | 使用密码连接本地 MySQL | mysql -u root -p |
mysql -h [主机名] -u [用户] -p | 连接远程 MySQL 服务器 | mysql -h 192.168.1.100 -u root -p |
mysql -u [用户] -p [数据库名] | 连接并直接使用某个数据库 | mysql -u root -p blog |
exit 或 quit 或 \\q | 退出 MySQL 命令行 | exit |
二、数据库操作
命令 | 描述 | 示例 |
SHOW DATABASES; | 显示所有数据库 | SHOW DATABASES; |
CREATE DATABASE [库名]; | 创建新数据库 | CREATE DATABASE mydb; |
DROP DATABASE [库名]; | 删除数据库 | DROP DATABASE old_db; |
USE [数据库名]; | 选择/切换当前操作的数据库 | USE blog; |
SELECT DATABASE(); | 显示当前正在使用的数据库 | SELECT DATABASE(); |
三、用户与权限管理
命令 | 描述 | 示例 |
SELECT User, Host FROM mysql.user; | 查看所有用户 | SELECT User, Host FROM mysql.user; |
CREATE USER '[用户名]'@'[主机]' IDENTIFIED BY '[密码]'; | 创建新用户 | CREATE USER 'john'@'localhost' IDENTIFIED BY 'secret'; |
DROP USER '[用户名]'@'[主机]'; | 删除用户 | DROP USER 'john'@'localhost'; |
GRANT [权限] ON [数据库].[表] TO '[用户]'@'[主机]'; | 授予用户权限 | GRANT ALL ON blog.* TO 'john'@'localhost'; |
REVOKE [权限] ON [数据库].[表] FROM '[用户]'@'[主机]'; | 撤销用户权限 | REVOKE DELETE ON blog.* FROM 'john'@'localhost'; |
SHOW GRANTS FOR '[用户]'@'[主机]'; | 查看用户的权限 | SHOW GRANTS FOR 'john'@'localhost'; |
FLUSH PRIVILEGES; | 刷新权限(授权后必须执行) | FLUSH PRIVILEGES; |
ALTER USER '[用户]'@'[主机]' IDENTIFIED BY '[新密码]'; | 修改用户密码 | ALTER USER 'root'@'localhost' IDENTIFIED BY 'newpass'; |
四、表操作 (DDL)
命令 | 描述 | 示例 |
SHOW TABLES; | 显示当前数据库中的所有表 | SHOW TABLES; |
DESCRIBE [表名]; 或 DESC [表名]; | 查看表的结构 | DESCRIBE users; |
CREATE TABLE [表名] (...); | 创建新表 | CREATE TABLE users (id INT, name VARCHAR(50)); |
DROP TABLE [表名]; | 删除表 | DROP TABLE temp_table; |
ALTER TABLE [表名] ADD [列名] [类型]; | 添加列 | ALTER TABLE users ADD email VARCHAR(100); |
ALTER TABLE [表名] DROP COLUMN [列名]; | 删除列 | ALTER TABLE users DROP COLUMN email; |
ALTER TABLE [表名] MODIFY COLUMN [列名] [新类型]; | 修改列的数据类型 | ALTER TABLE users MODIFY COLUMN name VARCHAR(100); |
ALTER TABLE [表名] RENAME TO [新表名]; | 重命名表 | ALTER TABLE users RENAME TO customers; |
SHOW CREATE TABLE [表名]; | 显示创建表的 SQL 语句 | SHOW CREATE TABLE users; |
TRUNCATE TABLE [表名]; | 清空表(删除所有数据,保留结构) | TRUNCATE TABLE log_data; |
五、 数据操作 (DML) - 增删改查 (CRUD)
1. 查询 (SELECT)
命令 | 描述 |
SELECT * FROM [表名]; | 查询表中所有数据 |
SELECT [列1], [列2] FROM [表名]; | 查询指定列 |
SELECT * FROM [表名] WHERE [条件]; | 带条件的查询 |
SELECT * FROM [表名] ORDER BY [列名] ASC/DESC; | 排序查询结果 |
SELECT * FROM [表名] LIMIT [数量]; | 限制返回的记录数 |
SELECT DISTINCT [列名] FROM [表名]; | 返回唯一不同的值 |
SELECT COUNT(*) FROM [表名]; | 统计行数 |
... GROUP BY [列名] ... | 分组统计 |
... LIKE '%pattern%' ... | 模糊查询 |
2. 插入 (INSERT)
命令 | 描述 | 示例 |
INSERT INTO [表名] VALUES (v1, v2, ...); | 插入完整的一行数据 | INSERT INTO users VALUES (1, 'Alice'); |
INSERT INTO [表名] (col1, col2) VALUES (v1, v2); | 插入指定列的数据 | INSERT INTO users (name) VALUES ('Bob'); |
3. 更新 (UPDATE)
命令 | 描述 | 示例 |
UPDATE [表名] SET [列名]=[新值] WHERE [条件]; | 谨慎! 更新数据 | UPDATE users SET name='Charlie' WHERE id=1; |
4. 删除 (DELETE)
命令 | 描述 | 示例 |
DELETE FROM [表名] WHERE [条件]; | 谨慎! 删除数据 | DELETE FROM users WHERE id=1; |
六、 高级查询与性能
命令 | 描述 |
EXPLAIN SELECT ... | 非常重要! 分析查询的执行计划,用于优化 |
SHOW INDEX FROM [表名]; | 查看表的索引 |
CREATE INDEX [索引名] ON [表名] ([列名]); | 创建索引以提高查询速度 |
SELECT ... JOIN ... ON ... | 多表关联查询 (INNER, LEFT, RIGHT JOIN) |
七、 事务处理
命令 | 描述 |
START TRANSACTION; | 开始一个事务 |
COMMIT; | 提交事务,确认更改 |
ROLLBACK; | 回滚事务,撤销所有更改 |
SET autocommit=0; | 关闭自动提交(此后需手动 COMMIT) |
八、 备份与恢复
命令 (在系统Shell中执行) | 描述 | 示例 |
mysqldump -u [用户] -p [数据库名] > backup.sql | 备份单个数据库到文件 | mysqldump -u root -p blog > blog_backup.sql |
mysqldump -u [用户] -p --all-databases > full_backup.sql | 备份所有数据库 | mysqldump -u root -p --all-databases > full_backup.sql |
mysql -u [用户] -p [数据库名] < backup.sql | 从文件恢复数据库 | mysql -u root -p new_blog < blog_backup.sql |
九、 服务器状态与信息
命令 | 描述 |
SHOW STATUS; | 显示服务器状态变量 |
SHOW VARIABLES; | 显示服务器系统变量 |
SHOW PROCESSLIST; | 查看当前正在执行的所有连接/进程 |
KILL [process_id]; | 杀死某个查询进程 |
十、 主从复制相关
命令 | 描述 |
SHOW MASTER STATUS; | 在主库执行,查看二进制日志状态 |
SHOW SLAVE STATUS\\G | 在从库执行,查看复制状态( \\G 格式化输出) |
STOP SLAVE; | 停止复制 |
START SLAVE; | 启动复制 |
RESET SLAVE ALL; | 彻底重置从库复制信息 |
Loading...