MySQL 是一款广泛使用的开源关系型数据库管理系统,其命令行工具提供了丰富的操作指令,涵盖了数据库的创建、管理、查询、优化等多个方面,以下将详细介绍 MySQL 的常用命令,帮助用户全面掌握其操作方法。

数据库操作命令
在 MySQL 中,数据库是存储数据的基本容器,首先需要连接到 MySQL 服务器,通常使用 mysql -u 用户名 -p
命令,输入密码后进入命令行界面,创建数据库使用 CREATE DATABASE 数据库名;
,CREATE DATABASE mydb;
,若需判断数据库是否存在再创建,可加上 IF NOT EXISTS
子句,删除数据库则使用 DROP DATABASE 数据库名;
,该操作不可逆,需谨慎使用,查看所有数据库列表通过 SHOW DATABASES;
命令,选择要操作的数据库使用 USE 数据库名;
,USE mydb;
,之后的所有操作将针对该数据库。
表操作命令
表是数据库中存储数据的结构化对象,创建表时需定义列名、数据类型和约束条件,基本语法为 CREATE TABLE 表名 (列名1 数据类型1 约束1, 列名2 数据类型2 约束2, ...);
,创建一个用户表 users
,包含 id
(自增主键)、name
(字符串,非空)、email
(唯一)列,命令为:
CREATE TABLE users ( id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(50) NOT NULL, email VARCHAR(100) UNIQUE );
查看当前数据库中的所有表使用 SHOW TABLES;
,查看表结构通过 DESCRIBE 表名;
或 SHOW COLUMNS FROM 表名;
,修改表结构(如添加列)使用 ALTER TABLE 表名 ADD COLUMN 列名 数据类型;
,删除列则用 ALTER TABLE 表名 DROP COLUMN 列名;
,删除表使用 DROP TABLE 表名;
,同样可加 IF EXISTS
避免报错。
数据操作命令(DML)
数据操作语言用于管理表中的数据,插入数据使用 INSERT INTO 表名 (列名1, 列名2, ...) VALUES (值1, 值2, ...);
,若插入所有列,可省略列名。INSERT INTO users (name, email) VALUES ('张三', 'zhangsan@example.com');
,批量插入可使用多组 VALUES,如 INSERT INTO users (name, email) VALUES ('李四', 'lisi@example.com'), ('王五', 'wangwu@example.com');
,查询数据是核心操作,基本语法为 SELECT 列名 FROM 表名 WHERE 条件;
, 表示所有列,SELECT * FROM users WHERE name = '张三';
,更新数据使用 UPDATE 表名 SET 列名1 = 值1, 列名2 = 值2 WHERE 条件;
,UPDATE users SET email = 'new@example.com' WHERE id = 1;
,删除数据使用 DELETE FROM 表名 WHERE 条件;
,DELETE FROM users WHERE id = 1;
,若省略 WHERE 条件将删除所有数据,需特别注意。

数据查询命令(进阶)
查询命令支持复杂的条件筛选和数据处理,使用 ORDER BY
排序结果,如 SELECT * FROM users ORDER BY age DESC;
表示按 age
降序排列。LIMIT
用于限制返回行数,如 SELECT * FROM users LIMIT 10;
返回前 10 行,LIMIT 5, 10
表示从第 6 行开始返回 10 行,聚合函数包括 COUNT()
(计数)、SUM()
(求和)、AVG()
(平均值)、MAX()
(最大值)、MIN()
(最小值),SELECT COUNT(*) FROM users;
计算用户总数,分组查询使用 GROUP BY
,如 SELECT department, COUNT(*) FROM employees GROUP BY department;
按部门统计人数,多表连接查询通过 JOIN
实现,SELECT users.name, orders.order_date FROM users JOIN orders ON users.id = orders.user_id;
关联用户表和订单表。
用户与权限管理命令
MySQL 的安全性依赖于用户权限管理,创建用户使用 CREATE USER '用户名'@'主机' IDENTIFIED BY '密码';
,CREATE USER 'admin'@'localhost' IDENTIFIED BY 'password123';
,授权使用 GRANT 权限列表 ON 数据库名.表名 TO '用户名'@'主机';
,权限列表如 SELECT, INSERT, UPDATE
, 表示所有数据库和表,GRANT ALL PRIVILEGES ON mydb.* TO 'admin'@'localhost';
,刷新权限使授权生效,使用 FLUSH PRIVILEGES;
,查看用户权限通过 SHOW GRANTS FOR '用户名'@'主机';
,SHOW GRANTS FOR 'admin'@'localhost';
,删除用户使用 DROP USER '用户名'@'主机';
。
备份与恢复命令
数据备份是保障数据安全的重要措施,备份数据库使用 mysqldump
命令,mysqldump -u 用户名 -p 数据库名 > 备份文件.sql;
,备份所有数据库可加 --all-databases
参数,恢复数据库时,需先创建空数据库,然后使用 mysql -u 用户名 -p 数据库名 < 备份文件.sql;
导入数据,备份单个表可在数据库名后加表名,如 mysqldump -u root -p mydb users > users_backup.sql;
。
其他常用命令
MySQL 还提供了一些实用命令,查看当前数据库版本使用 SELECT VERSION();
,查看当前用户使用 SELECT USER();
,显示命令执行时间使用 SET profiling = 1;
开启 profiling,查询后通过 SHOW PROFILE;
查看,退出 MySQL 命令行使用 EXIT;
或 QUIT;
。

数据类型与约束总结
类型分类 | 常用数据类型 | 说明 |
---|---|---|
数值类型 | INT, FLOAT, DECIMAL | 存储整数、浮点数、精确小数 |
字符串类型 | VARCHAR, CHAR, TEXT | 存储变长字符串、定长字符串、长文本 |
日期时间类型 | DATE, DATETIME, TIMESTAMP | 存储日期、日期时间、时间戳 |
约束条件 | PRIMARY KEY, NOT NULL, UNIQUE, FOREIGN KEY | 主键、非空、唯一、外键约束 |
相关问答FAQs
Q1: 如何重置 MySQL 的 root 密码?
A1: 若忘记 root 密码,可通过以下步骤重置:1. 停止 MySQL 服务(Linux 下使用 sudo systemctl stop mysql
,Windows 通过服务管理器停止);2. 以安全模式启动 MySQL,跳过权限表检查,Linux 下执行 sudo mysqld_safe --skip-grant-tables &
;3. 无密码登录 MySQL,使用 mysql -u root
;4. 执行 UPDATE mysql.user SET authentication_string=PASSWORD('新密码') WHERE User='root';
更新密码;5. 刷新权限 FLUSH PRIVILEGES;
并重启 MySQL 服务。
Q2: MySQL 中如何优化慢查询?
A2: 优化慢查询可从以下方面入手:1. 使用 EXPLAIN
分析查询执行计划,检查是否使用了索引、是否存在全表扫描;2. 为频繁查询的列、连接条件、排序条件添加索引,CREATE INDEX idx_name ON users(name);
;3. 避免在 WHERE
子句中对列进行函数操作或表达式计算,以免导致索引失效;4. 优化 SQL 语句,避免使用 SELECT *
,只查询必要字段;5. 对于大数据量表,考虑分库分表或使用缓存(如 Redis)减少数据库压力。