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 命令大全,你已经具备了独立操作数据库的能力。从连接、建表、增删改查,到备份恢复、权限管理,每一步都扎实落地。
无论是写项目、做测试,还是排查线上问题,这些命令都能让你快速定位、解决问题。别再依赖图形化工具的“一键操作”,真正懂命令的人,才能掌控数据的主动权。
记住:命令是工具,理解是核心。多写、多练、多调试,你很快就能成为团队里那个“数据库高手”。