MySQL 命令大全(建议收藏)

MySQL 命令大全:从零开始掌握数据库操作

你有没有遇到过这样的场景?项目开发到一半,发现数据存不进去,查询结果乱七八糟,甚至数据库突然连不上?别急,这往往不是代码的问题,而是对数据库命令掌握不够熟练。

MySQL 作为最流行的开源关系型数据库之一,几乎在每个 Web 项目中都会用到。无论是个人博客、企业后台,还是电商系统,背后都离不开 MySQL 的支持。掌握一套完整的 MySQL 命令,就像拥有一把万能钥匙,能让你在数据世界里畅通无阻。

今天这篇“MySQL 命令大全”,就是为初学者和中级开发者量身打造的实战指南。我们不讲理论堆砌,只讲真正能用、能解决问题的命令。从连接数据库到数据操作,再到权限管理,一步步带你打通 MySQL 的任督二脉。


连接与基础管理命令

在使用 MySQL 之前,首先要学会如何连接数据库。这就像去银行办事,得先刷身份证进大厅。

打开终端,输入以下命令:

mysql -h localhost -u root -p
  • -h 指定主机地址,localhost 表示本地
  • -u 指定用户名,root 是 MySQL 的超级管理员
  • -p 表示接下来要输入密码

执行后系统会提示你输入密码。输入正确后,你就能进入 MySQL 命令行界面,看到 mysql> 提示符,说明已经成功登录。

💡 小贴士:如果你安装的是 MySQL 8.0+,默认用户密码可能需要通过 ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '你的密码'; 来设置旧密码插件,否则可能无法登录。

连接成功后,可以执行一些基础管理命令:

-- 查看当前所有数据库
SHOW DATABASES;

-- 创建一个新数据库(比喻:建一个新文件柜)
CREATE DATABASE myapp_db;

-- 使用某个数据库(比喻:打开某个文件柜)
USE myapp_db;

-- 查看当前正在使用的数据库
SELECT DATABASE();

这些命令是操作数据库的起点。记住,SHOW DATABASES; 就像在查看你电脑里有多少个文件夹;CREATE DATABASE 就是新建一个文件夹;USE 就是切换到某个文件夹里工作。


数据库结构设计与管理

创建数据库只是第一步。接下来要做的,是设计数据的“骨架”——也就是表结构。这就像盖房子前要先画好图纸。

创建表与字段定义

-- 创建用户表,用于存储用户信息
CREATE TABLE users (
    id INT AUTO_INCREMENT PRIMARY KEY,           -- 自增主键,相当于用户的唯一编号
    username VARCHAR(50) NOT NULL UNIQUE,       -- 用户名,长度最多 50 字符,不能重复
    email VARCHAR(100) NOT NULL,                -- 邮箱,必须填写
    age INT DEFAULT 18,                         -- 年龄,默认值为 18
    created_at DATETIME DEFAULT CURRENT_TIMESTAMP  -- 创建时间,自动记录当前时间
);

📌 注释说明:

  • INT 是整数类型,AUTO_INCREMENT 让 ID 自动递增
  • PRIMARY KEY 表示主键,唯一标识每一行记录
  • VARCHAR(50) 是可变长度字符串,适合存用户名
  • NOT NULL 表示不能为空,UNIQUE 表示不能重复
  • DEFAULT 设置默认值,CURRENT_TIMESTAMP 是当前时间

查看与修改表结构

-- 查看表结构(相当于查看文件柜里的文件分类)
DESCRIBE users;

-- 或者使用简写形式
DESC users;

-- 添加新字段(比如加个手机号)
ALTER TABLE users ADD COLUMN phone VARCHAR(15);

-- 修改字段类型(比如把用户名长度从 50 扩展到 100)
ALTER TABLE users MODIFY COLUMN username VARCHAR(100);

-- 删除字段(比如不再需要邮箱字段)
ALTER TABLE users DROP COLUMN email;

💡 比喻:ALTER TABLE 就像在装修房子,想加个窗户(加字段)、换扇门(改字段)、拆掉墙(删字段),灵活又实用。


数据增删改查(CRUD)

这是最核心的部分,也是你在项目中使用最多的操作。我们用一个“用户管理系统”来举例。

插入数据(INSERT)

-- 插入一条用户记录
INSERT INTO users (username, email, age) 
VALUES ('alice', 'alice@example.com', 25);

-- 插入多条数据
INSERT INTO users (username, email, age) 
VALUES 
    ('bob', 'bob@example.com', 30),
    ('charlie', 'charlie@example.com', 22);

✅ 重点:INSERT INTO 后面跟表名,VALUES 后面是具体数据。注意字段顺序必须与数据顺序一致。

查询数据(SELECT)

-- 查询所有用户
SELECT * FROM users;

-- 查询特定字段(比如只看用户名和年龄)
SELECT username, age FROM users;

-- 条件查询:查找年龄大于 20 的用户
SELECT * FROM users WHERE age > 20;

-- 模糊查询:查找用户名包含 'a' 的用户
SELECT * FROM users WHERE username LIKE '%a%';

-- 排序:按年龄升序排列
SELECT * FROM users ORDER BY age ASC;

-- 限制结果数量:只取前 2 条
SELECT * FROM users LIMIT 2;

📌 小技巧:LIKE '%a%' 中的 % 是通配符,代表任意字符,_ 代表一个字符。比如 LIKE '_a%' 表示第二个字符是 a。

更新数据(UPDATE)

-- 把用户 alice 的年龄改成 26
UPDATE users 
SET age = 26 
WHERE username = 'alice';

-- 同时更新多个字段
UPDATE users 
SET age = 30, email = 'newemail@example.com' 
WHERE username = 'bob';

⚠️ 注意:WHERE 是关键!没有它,会更新整张表,后果严重!

删除数据(DELETE)

-- 删除用户名为 charlie 的用户
DELETE FROM users WHERE username = 'charlie';

-- 删除所有数据(但保留表结构)
DELETE FROM users;

-- 彻底清空表(更快,但不能恢复)
TRUNCATE TABLE users;

📌 区别说明:DELETE 是逐行删除,可回滚;TRUNCATE 是直接清空整个表,效率高但无法回滚,慎用!


数据库备份与恢复

数据是公司的命脉,备份就是保险。你不可能每次都靠“下次注意”来防止数据丢失。

备份数据库

mysqldump -u root -p myapp_db > backup.sql

💡 说明:mysqldump 是 MySQL 自带的备份工具,会把数据库结构和数据导出为 SQL 文件。

恢复数据库

mysql -u root -p myapp_db < backup.sql

✅ 小建议:定期备份,比如每天凌晨自动执行一次,用 Linux 的 cron 任务调度。


用户权限管理

在团队协作中,不是所有人都该有“上帝权限”。合理分配权限,是数据库安全的关键。

创建用户并授予权限

-- 创建一个新用户,密码为 123456
CREATE USER 'dev_user'@'localhost' IDENTIFIED BY '123456';

-- 授予该用户对 myapp_db 数据库的所有权限
GRANT ALL PRIVILEGES ON myapp_db.* TO 'dev_user'@'localhost';

-- 刷新权限,让设置立即生效
FLUSH PRIVILEGES;

📌 权限说明:

  • ALL PRIVILEGES 表示所有权限(增删改查、建表、删除表等)
  • ON myapp_db.* 表示对 myapp_db 数据库的所有表
  • @'localhost' 表示该用户只能从本地登录

查看用户权限

-- 查看某个用户的权限
SHOW GRANTS FOR 'dev_user'@'localhost';

💡 比喻:权限管理就像公司门禁系统,老板可以进所有房间,普通员工只能进自己工位,保安只能查记录。


常见问题与调试技巧

1. 连接被拒绝?

可能是 MySQL 服务没启动。在终端运行:

sudo service mysql status

如果没运行,用:

sudo service mysql start

2. 命令执行后无反应?

检查是否忘记加分号 ;。MySQL 命令必须以分号结尾。

3. 字符集乱码?

确保数据库和表的字符集设置为 utf8mb4

-- 创建数据库时指定字符集
CREATE DATABASE myapp_db CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

结语

掌握这套 MySQL 命令大全,你已经具备了独立操作数据库的能力。从连接、建表、增删改查,到备份恢复、权限管理,每一步都扎实落地。

无论是写项目、做测试,还是排查线上问题,这些命令都能让你快速定位、解决问题。别再依赖图形化工具的“一键操作”,真正懂命令的人,才能掌控数据的主动权。

记住:命令是工具,理解是核心。多写、多练、多调试,你很快就能成为团队里那个“数据库高手”。