原创

MySQL命令使用大全(数据库常用命令详解)

一、MySQL 命令体系概述

MySQL 是目前最常见的关系型数据库之一,在日常开发、运维和数据分析中,大量操作都需要通过 MySQL 命令完成。熟练掌握 MySQL 命令不仅可以提高开发效率,还能在排查问题、优化数据库结构和管理数据时发挥重要作用。

MySQL 命令大体可以分为以下几类:

  1. 连接与退出命令
  2. 数据库管理命令
  3. 数据表管理命令
  4. 数据操作命令(DML)
  5. 权限管理命令
  6. 事务控制命令
  7. 索引与约束命令
  8. 查询与分析命令
  9. 系统管理与维护命令

这些命令既可以在 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 密码
email 邮箱
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 命令使用建议

在实际开发中,可以遵循以下原则:

  1. 表结构设计优先
  2. 合理使用索引
  3. 避免全表扫描
  4. 使用 EXPLAIN 分析 SQL
  5. 定期备份数据库
  6. 合理管理权限

对于 Java 后端开发(如 Spring Boot + MyBatis 或 Spring Data JPA),虽然大部分 SQL 由程序执行,但掌握 MySQL 命令依然非常重要,因为数据库问题排查、数据修复和性能优化通常需要直接在数据库层完成。

熟练掌握 MySQL 命令,是数据库开发与运维能力的重要基础,也是构建高性能系统的重要前提。


正文到此结束
评论插件初始化中...
Loading...