拒绝死记硬背!一张图通关 MySQL 常用命令,保姆级手绘卡片全集(建议收藏)17认证网

正规官方授权
更专业・更权威

拒绝死记硬背!一张图通关 MySQL 常用命令,保姆级手绘卡片全集(建议收藏)

作者/公号:文哥/文哥AI技术指南
导读:相信很多程序员、数据库新手都有过这样的烦恼:SQL 语句虽然天天用,但有些不常用的命令(如创建索引、修改权限、数据库导出)还是经常记不清参数,每次都要去搜索引擎里搜。
今天,我们把这套为小红书设计的 11 张手账风格 MySQL 常用命令知识卡片 整理成文。它不仅包含核心代码,还通过生动的生活类比(如门禁系统、Excel透视表、搬家打包)帮你深度理解。建议立刻收藏,当作随手查阅的电子速查手册!


🗺️ MySQL 命令全景流程关系图

在开始学习具体命令前,先看这张全景图。MySQL 操作不是孤立的,它是一条完整的流水线:

连接服务 ➔ 数据库操作 ➔ 表操作 ➔ 数据的增删改查 ➔ 索引与权限优化 ➔ 备份与恢复


01. 连接与管理:连通数据库的“开机钥匙”

连接数据库是所有操作的第一步。只有把你的本地客户端和服务器端“握手”接通,才能向引擎下达 SQL 语句。

  • • 一句话白话:把数据库服务器连上,才能开始操作。
  • • 常用写法 (命令行)

    # 连接本地数据库,按提示输入密码
    $ mysql -u root -p
    
    # 查看当前数据库版本
    mysql> SELECT VERSION();
    
    # 安全退出客户端
    mysql> exit;
  • • 生活类比:就像打电话——先拨通对方的号码(mysql -u ... -p),接通后询问对方名字(SELECT VERSION()),聊完挂断电话(exit)。
  • • 应用场景:每天早上开始编码时,或是远程连入测试/生产服务器排查数据时。
  • • 避坑指南
    • • ⚠️ -p 后面不要直接写明文密码!容易留在 shell 历史记录中导致泄密,敲回车后再输入更安全。
    • • ⚠️ 连接失败时,优先检查 MySQL 端口(默认 3306)是否被占用或防火墙是否放行。

02. 数据库操作:给数据安个“家”

在 MySQL 中,数据库(Database)是存放表结构的物理容器。先有库,才能建表存数据。

  • • 一句话白话:先有库,才能建表存数据。
  • • 常用写法

    -- 创建一个名为 mydb 的数据库(带字符集)
    CREATE DATABASE mydb CHARACTER SET utf8mb4;
    
    -- 显示服务器上所有的数据库
    SHOW DATABASES;
    
    -- 切换并进入 mydb 数据库
    USE mydb;
    
    -- 销毁 mydb 数据库(高危!)
    DROP DATABASE mydb;
  • • 生活类比:就像买地皮盖楼——CREATE DATABASE 是买下一块规划好的地皮,SHOW DATABASES 是看看你名下有几块地,USE 是人走到其中一块地皮上准备动工,DROP 则是用推土机强行夷平这块地。
  • • 应用场景:新项目立项、环境初始化或删除测试用临时库。
  • • 避坑指南
    • • ⚠️ 强烈建议创建数据库时显式指定编码为 utf8mb4,否则插入 emoji 表情或生僻字时会报错!
    • • ⚠️ 在执行 DROP DATABASE 前一定要核对环境,生产环境切忌误删!

03. 表操作:给数据规划“格间”

数据库是地皮,数据表(Table)就是盖在上面的楼房。必须严密规划好每一层楼有几个房间、用来放什么类型的物品。

  • • 一句话白话:表是数据的家,定义好结构才能存东西。
  • • 常用写法

    -- 创建一张用户表 users
    CREATE TABLE users (
        id INT AUTO_INCREMENT PRIMARY KEY,
        name VARCHAR(50) NOT NULL,
        email VARCHAR(100) UNIQUE
    );
    
    -- 检查表结构定义
    DESCRIBE users;
    
    -- 修改表结构:新增“年龄”字段
    ALTER TABLE users ADD age INTDEFAULT18;
    
    -- 彻底删除 users 表
    DROPTABLE users;
  • • 生活类比:就像制造货架——建表(CREATE TABLE)是规划货架的每一格放什么(类型与长度限制),查看结构(DESCRIBE)是看产品说明书,修改表(ALTER)是给货架动态焊上一个新格子,删表(DROP)是直接将整个货架扔进垃圾焚烧厂。
  • • 应用场景:设计业务实体(如用户、订单、商品表)、根据产品需求给表加列。
  • • 避坑指南
    • • ⚠️ 主键(PRIMARY KEY)必不可少,通常用自增 AUTO_INCREMENT
    • • ⚠️ 在百万级以上数据的大表上执行 ALTER TABLE 需要极其慎重,可能导致锁表甚至服务宕机!

04. 查询数据:在沙里淘出金子

SELECT 是 SQL 的灵魂。通过丰富的条件、排序、分页指令,你能从数以亿计的记录中瞬间提取所需信息。

  • • 一句话白话:从海量数据里找到你需要的信息。
  • • 常用写法

    -- 查询 users 表中的所有数据,限制返回前 10 行
    SELECT*FROM users LIMIT 10;
    
    -- 带条件查询,并按年龄从大到小排序
    SELECT name, age FROM users WHERE age >=18ORDERBY age DESC;
    
    -- 组合过滤:多条件且只取前 5 条
    SELECT name FROM users WHERE email ISNOT NULL LIMIT 5;
    
    -- 去重查询
    SELECTDISTINCT age FROM users;
  • • 生活类比:就像用筛子筛沙子——SELECT 决定你要留下金子(字段)还是普通细沙;WHERE 是筛孔的大小(过滤条件);ORDER BY 决定按大小顺序装箱;LIMIT 则表示你只要装满最上面的 5 斗沙。
  • • 应用场景:数据报表查询、后台数据列表展示、条件检索定位。
  • • 避坑指南
    • • ⚠️ 生产环境严禁使用 SELECT *!只查需要的字段可以节省极大网络带宽与磁盘 I/O。
    • • ⚠️ 分页查询时,LIMIT offset, count 若偏移量(offset)过大(如几百万),会导致查询性能崩塌,应用索引覆盖优化

05. 增删改 (CRUD):流动的数据“新陈代谢”

没有静态的数据。通过增(INSERT)、改(UPDATE)、删(DELETE)命令,你的数据库才能活起来。

  • • 一句话白话:数据的增删改,四个字概括所有基础操作。
  • • 常用写法

    -- 插入一条新的用户记录
    INSERT INTO users (name, email) VALUES ('张三', 'zhangsan@example.com');
    
    -- 修改指定用户的邮箱(注意 WHERE 限定!)
    UPDATE users SET email = 'new_email@example.com' WHERE id = 1;
    
    -- 删除指定用户(注意 WHERE 限定!)
    DELETE FROM users WHERE id = 1;
  • • 生活类比:就像仓库日常进出库——INSERT 是新采购货物入库摆放;UPDATE 是修改货物上的价格标签;DELETE 是清退残次商品出库。
  • • 应用场景:用户注册(增)、修改密码与绑定手机号(改)、注销账号或清空购物车(删)。
  • • 避坑指南
    • • ⚠️ 【警示】:写 UPDATE 和 DELETE 语句时,第一步先写 WHERE!如果不带 WHERE 限制,整张表的所有数据都会被瞬间修改或清空!
    • • ⚠️ DELETE FROM 属于物理删除,释放的空间不会被系统立刻还给 OS,频繁增删容易产生表空间碎片。

06. 聚合与分组:把复杂数据提炼为“统计表”

当你拥有几十万行订单数据,老板只想知道“每个季度总销售额是多少”。这时,COUNT/SUM/GROUP BY 组合就是最强提炼工具。

  • • 一句话白话:统计汇总、分组分析,让数据开口说话。
  • • 常用写法

    -- 统计总用户数
    SELECT COUNT(*) FROM users;
    
    -- 计算考试总分与平均分
    SELECT SUM(score), AVG(score) FROM exams;
    
    -- 按部门分组统计人数,并且只保留人数多于 5 的部门
    SELECT dep, COUNT(*) 
    FROM staff 
    GROUP BY dep 
    HAVING COUNT(*) > 5;
  • • 生活类比:就像使用 Excel 数据透视表——先选中部门列进行分类堆叠(GROUP BY),接着计算每个部门人数(COUNT),最后只保留大于 5 人的大部门(HAVING)。
  • • 应用场景:生成财务周报、统计班级平均成绩、提取高销量商品品类。
  • • 避坑指南
    • • ⚠️ WHERE 负责在分组前对原始数据进行过滤,而 HAVING 负责在分组汇总后对结果进行过滤。两者绝对不能混淆!
    • • ⚠️ 在 SELECT 中出现的非聚合函数字段(如部门 dep),必须写进后面的 GROUP BY 中,否则会报错或产生随机错误数据。

07. 表连接 (JOIN):拼起碎裂的信息“版图”

为了减少数据冗余,数据库设计通常会做“拆分表”(范式化)。想获得跨表完整信息时,表连接(JOIN)就是架设在两张表之间的物理桥梁。

  • • 一句话白话:把多张表拼在一起,让数据关联起来。
  • • 常用写法

    -- 内连接:只返回两表都有的匹配记录(交集)
    SELECT u.name, o.total 
    FROM users u 
    INNER JOIN orders o ON u.id = o.user_id;
    
    -- 左外连接:以左表为主,右表无匹配补 NULL
    SELECT u.name, o.total 
    FROM users u 
    LEFT JOIN orders o ON u.id = o.user_id;
  • • 生活类比:就像 Excel 里的 VLOOKUP 函数——以“用户ID”作为匹配钥匙,去另一张订单表中把关联的消费金额取回来,最终拼到同一行显示。
  • • 应用场景:查询订单时同步拉出买家昵称、导出包含部门名称的员工表格。
  • • 避坑指南
    • • ⚠️ 连接条件 ON 如果不写或写错,可能会引发灾难性的“笛卡尔积”效应,导致查询产生天文数字的重复行,瞬间拖垮内存。
    • • ⚠️ 用于多表 JOIN 的关联列上务必建立索引,否则在大表互连时会产生漫长的大表全表扫描

08. 索引操作:让检索“飞”起来的秘密武器

随着表数据增多,全表扫描会变得越来越慢。给常用检索字段建索引(Index),就如同在厚书后增加拼音字母检索一样。

  • • 一句话白话:给数据库装加速器,让查询飞起来。
  • • 常用写法

    -- 在 users 表的 email 列上建立索引 idx_email
    CREATE INDEX idx_email ON users(email);
    
    -- 用 ALTER 语句增加索引
    ALTER TABLE users ADD INDEX idx_email(email);
    
    -- 删除索引
    DROP INDEX idx_email ON users;
    
    -- 查看某张表上所有索引定义
    SHOW INDEX FROM users;
  • • 生活类比:就像给字典制作首字母检索表——不用从第一页开始逐页翻寻,只需通过首字母快速定位到“email”所在的页码,直奔目标行。
  • • 应用场景:高频出现在 WHEREORDER BY 字段上建索引,以及对主外键列加建索引以加快表关联。
  • • 避坑指南
    • • ⚠️ 索引虽然能大幅提高查询速度,但它需要占用磁盘空间,并且会拖慢 INSERT/UPDATE 的写入速度。严禁在每个字段上盲目建索引!
    • • ⚠️ 区分度极低(如性别只有男女)或频繁修改的列上不宜建索引。

09. 用户与权限:数据库的“门禁系统”

绝不能让所有人共用同一个管理员(root)账号!为安全起见,应遵循最小特权原则,为每个人或服务分配独立权限账号。

  • • 一句话白话:谁可以访问什么,权限管理很重要。
  • • 常用写法

    -- 创建一个只限本地登录的账户 admin
    CREATEUSER'admin'@'localhost' IDENTIFIED BY'pass123';
    
    -- 授予 admin 对 mydb 库下所有表的 SELECT/INSERT 权限
    GRANTSELECT, INSERTON mydb.*TO'admin'@'localhost';
    
    -- 撤回 INSERT 权限
    REVOKEINSERTON mydb.*FROM'admin'@'localhost';
    
    -- 立即重载刷新服务器内存中的权限授权表
    FLUSH PRIVILEGES;
  • • 生活类比:就像小区门禁——先在前台登记配发访客卡(CREATE USER),接着开通该卡只能刷 3 楼的权限(GRANT),中途若该人员有变动就收回特定楼层权(REVOKE),并立刻让后台系统更新配置(FLUSH PRIVILEGES)。
  • • 应用场景:新微服务接入数据库配置只读账户、分配临时读写账号给研发同事。
  • • 避坑指南
    • • ⚠️ 务必遵循最小特权原则,绝不可为了贪图省事直接分发 ALL PRIVILEGES
    • • ⚠️ 更改权限后务必执行 FLUSH PRIVILEGES 强刷,否则可能会出现权限未立刻在内存生效的莫名报错。

10. 备份与恢复:安全防线上的“救生圈”

数据无价,生产环境必须有周密的备份计划。无论是误操作删库,还是服务器硬件损坏,备份文件都是你最后的救命稻草。

  • • 一句话白话:数据无价,定期备份是底线。
  • • 常用写法 (注意部分是系统 Shell 命令)

    # 1. 导出数据库备份 (在系统 Shell 命令行中运行,非 mysql> 终端)
    $ mysqldump -u root -p mydb > backup.sql
    
    # 2. 导入数据库还原 (在系统 Shell 命令行中运行)
    $ mysql -u root -p mydb < backup.sql
    -- 3. 批量载入文本文档数据 (在 mysql> 终端运行,速度极快)
    mysql> LOAD DATA INFILE 'data.txt' INTO TABLE users;
  • • 生活类比:就像搬家打包——先将房屋内所有电器衣物收拾装入防震纸箱封箱(mysqldump 导出),到达新家地址后开箱还原摆好(< backup.sql 导入)。
  • • 应用场景:服务器整体迁移、生产数据库每日冷备、大批量灌入外部清洗后的 CSV 业务数据。
  • • 避坑指南
    • • ⚠️ mysqldump 是系统级二进制命令,必须在 Linux/macOS 的终端 Shell 提示符 $ 下执行,而不是进入 mysql> 提示符下输入,很多初学者在此踩坑!
    • • ⚠️ 物理导入还原会直接重写覆盖当前库中的同名表结构与数据,操作前千万要核实是否是目标开发/测试库,严防二次覆盖悲剧!

💡 总结

数据库技术博大精深,但只要抓住这 25 个最核心的常用命令,你就已经拥有了能够应付 90% 场景的利器。学习 SQL 的秘诀是“流程心智”配合“场景代入”,在实际敲代码中多加思考命令背后的数据流转,你会发现它简单清晰,极富逻辑之美!

版权申明:内容来源网络,版权归原创者所有,如有侵权请联系删除

想了解更多干货,可通过下方扫码关注

可扫码添加上智启元官方客服微信👇

未经允许不得转载:17认证网 » 拒绝死记硬背!一张图通关 MySQL 常用命令,保姆级手绘卡片全集(建议收藏)
分享到:0

评论已关闭。

400-663-6632
咨询老师
咨询老师
咨询老师