MySQL命令使用大全(数据库常用命令详解)
一、MySQL 命令体系概述
MySQL 是目前最常见的关系型数据库之一,在日常开发、运维和数据分析中,大量操作都需要通过 MySQL 命令完成。熟练掌握 MySQL 命令不仅可以提高开发效率,还能在排查问题、优化数据库结构和管理数据时发挥重要作用。
MySQL 命令大体可以分为以下几类:
- 连接与退出命令
- 数据库管理命令
- 数据表管理命令
- 数据操作命令(DML)
- 权限管理命令
- 事务控制命令
- 索引与约束命令
- 查询与分析命令
- 系统管理与维护命令
这些命令既可以在 MySQL 客户端中直接执行,也可以通过程序(例如 Java + JDBC)进行调用。
二、连接 MySQL 与基本命令
在使用 MySQL 之前,需要先连接数据库服务器。
1. 连接 MySQL
mysql -h 主机地址 -P 端口 -u 用户名 -p
示例:
mysql -h 127.0.0.1 -P 3306 -u root -p
参数说明:
| 参数 | 说明 |
|---|---|
| -h | MySQL 服务器地址 |
| -P | 端口号 |
| -u | 用户名 |
| -p | 输入密码 |
如果是本地登录,可以简写:
mysql -uroot -p
2. 查看当前 MySQL 版本
SELECT VERSION();
3. 查看当前用户
SELECT USER();
4. 查看当前数据库
SELECT DATABASE();
5. 退出 MySQL
exit;
或
quit;
三、数据库管理命令
数据库是 MySQL 中的逻辑容器,用于存储数据表和其他对象。
1. 查看所有数据库
SHOW DATABASES;
2. 创建数据库
CREATE DATABASE db_name;
示例:
CREATE DATABASE blog_system;
指定字符集:
CREATE DATABASE blog_system
CHARACTER SET utf8mb4
COLLATE utf8mb4_unicode_ci;
3. 删除数据库
DROP DATABASE db_name;
示例:
DROP DATABASE blog_system;
4. 选择数据库
USE db_name;
示例:
USE blog_system;
5. 查看数据库创建语句
SHOW CREATE DATABASE db_name;
四、数据表管理命令
表是 MySQL 存储数据的核心结构。
1. 查看所有表
SHOW TABLES;
2. 创建表
下面是一个典型的用户表结构。
CREATE TABLE user (
id BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,
username VARCHAR(50) NOT NULL,
password VARCHAR(255) NOT NULL,
email VARCHAR(100),
status TINYINT DEFAULT 1,
create_time DATETIME DEFAULT CURRENT_TIMESTAMP,
update_time DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (id),
UNIQUE KEY uk_username (username)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
字段说明:
| 字段 | 说明 |
|---|---|
| id | 主键 |
| username | 用户名 |
| password | 密码 |
| 邮箱 | |
| status | 状态 |
| create_time | 创建时间 |
| update_time | 更新时间 |
3. 查看表结构
DESC table_name;
示例:
DESC user;
4. 查看建表 SQL
SHOW CREATE TABLE table_name;
示例:
SHOW CREATE TABLE user;
5. 删除表
DROP TABLE table_name;
示例:
DROP TABLE user;
6. 重命名表
RENAME TABLE old_name TO new_name;
示例:
RENAME TABLE user TO sys_user;
五、数据操作命令(DML)
DML(Data Manipulation Language)用于对数据进行增删改查。
1. 插入数据
INSERT INTO table_name (字段1, 字段2)
VALUES (值1, 值2);
示例:
INSERT INTO user (username, password, email)
VALUES ('admin', '123456', 'admin@example.com');
批量插入:
INSERT INTO user (username, password)
VALUES
('user1','123'),
('user2','123'),
('user3','123');
2. 查询数据
查询全部数据:
SELECT * FROM user;
查询指定字段:
SELECT username,email FROM user;
条件查询:
SELECT * FROM user
WHERE status = 1;
排序:
SELECT * FROM user
ORDER BY create_time DESC;
分页查询:
SELECT * FROM user
LIMIT 10 OFFSET 0;
MySQL 也支持简写:
SELECT * FROM user
LIMIT 0,10;
3. 更新数据
UPDATE table_name
SET 字段 = 值
WHERE 条件;
示例:
UPDATE user
SET status = 0
WHERE id = 1;
4. 删除数据
DELETE FROM table_name
WHERE 条件;
示例:
DELETE FROM user
WHERE id = 5;
删除全部数据:
DELETE FROM user;
六、表结构修改命令
在系统迭代过程中,经常需要修改表结构。
1. 添加字段
ALTER TABLE user
ADD COLUMN phone VARCHAR(20);
2. 删除字段
ALTER TABLE user
DROP COLUMN phone;
3. 修改字段类型
ALTER TABLE user
MODIFY COLUMN username VARCHAR(100);
4. 修改字段名
ALTER TABLE user
CHANGE COLUMN username login_name VARCHAR(100);
5. 添加索引
ALTER TABLE user
ADD INDEX idx_email (email);
6. 删除索引
ALTER TABLE user
DROP INDEX idx_email;
七、索引管理命令
索引是数据库性能优化的重要手段。
1. 创建索引
CREATE INDEX idx_user_email
ON user(email);
2. 创建唯一索引
CREATE UNIQUE INDEX uk_username
ON user(username);
3. 查看索引
SHOW INDEX FROM user;
索引信息包含:
| 字段 | 说明 |
|---|---|
| Key_name | 索引名称 |
| Column_name | 字段 |
| Non_unique | 是否唯一 |
| Index_type | 索引类型 |
4. 删除索引
DROP INDEX idx_user_email ON user;
八、事务控制命令
事务用于保证数据一致性。
MySQL 默认使用 InnoDB 存储引擎支持事务。
1. 开启事务
START TRANSACTION;
或
BEGIN;
2. 提交事务
COMMIT;
3. 回滚事务
ROLLBACK;
4. 设置自动提交
查看自动提交状态:
SELECT @@autocommit;
关闭自动提交:
SET autocommit = 0;
九、权限管理命令
MySQL 提供完善的权限控制系统。
1. 创建用户
MySQL 5.x 语法:
CREATE USER 'test'@'%' IDENTIFIED BY '123456';
MySQL 8.x 语法:
CREATE USER 'test'@'%' IDENTIFIED WITH mysql_native_password BY '123456';
2. 授权
GRANT ALL PRIVILEGES ON db_name.* TO 'test'@'%';
刷新权限:
FLUSH PRIVILEGES;
3. 查看权限
SHOW GRANTS FOR 'test'@'%';
4. 撤销权限
REVOKE ALL PRIVILEGES ON db_name.* FROM 'test'@'%';
5. 删除用户
DROP USER 'test'@'%';
十、查询分析命令
在生产环境中,经常需要分析 SQL 执行效率。
1. 查看执行计划
EXPLAIN SELECT * FROM user WHERE id = 1;
常见字段说明:
| 字段 | 含义 |
|---|---|
| type | 访问类型 |
| key | 使用的索引 |
| rows | 预估扫描行数 |
| Extra | 额外信息 |
2. 查看慢查询
SHOW VARIABLES LIKE 'slow_query_log';
3. 查看当前连接
SHOW PROCESSLIST;
4. 终止查询
KILL 线程ID;
十一、数据库备份与恢复
数据库备份是运维的重要任务。
1. 备份数据库
使用 mysqldump:
mysqldump -u root -p blog_system > backup.sql
2. 备份指定表
mysqldump -u root -p blog_system user > user.sql
3. 恢复数据库
mysql -u root -p blog_system < backup.sql
十二、常用系统管理命令
1. 查看服务器状态
SHOW STATUS;
2. 查看系统变量
SHOW VARIABLES;
查看指定变量:
SHOW VARIABLES LIKE 'max_connections';
3. 查看字符集
SHOW VARIABLES LIKE 'character_set%';
4. 查看存储引擎
SHOW ENGINES;
十三、MySQL 5.x 与 MySQL 8.x 命令区别
MySQL 8.x 在安全性、性能和 SQL 特性方面做了大量升级。
| 功能 | MySQL 5.x | MySQL 8.x |
|---|---|---|
| 默认认证插件 | mysql_native_password | caching_sha2_password |
| 窗口函数 | 不支持 | 支持 |
| CTE(WITH语法) | 不支持 | 支持 |
| JSON功能 | 基础支持 | 完整支持 |
| 数据字典 | 文件结构 | 统一数据字典 |
因此在生产环境中,如果从 MySQL 5.x 升级到 MySQL 8.x,需要特别注意认证插件、字符集和 SQL 兼容问题。
十四、MySQL 命令使用建议
在实际开发中,可以遵循以下原则:
- 表结构设计优先
- 合理使用索引
- 避免全表扫描
- 使用 EXPLAIN 分析 SQL
- 定期备份数据库
- 合理管理权限
对于 Java 后端开发(如 Spring Boot + MyBatis 或 Spring Data JPA),虽然大部分 SQL 由程序执行,但掌握 MySQL 命令依然非常重要,因为数据库问题排查、数据修复和性能优化通常需要直接在数据库层完成。
熟练掌握 MySQL 命令,是数据库开发与运维能力的重要基础,也是构建高性能系统的重要前提。