新手应先跑通增删改查+表关联+简单业务逻辑闭环,建库用utf8mb4字符集和InnoDB引擎,主键用BIGINT UNSIGNED AUTO_INCREMENT,禁用SELECT *,WHERE高区分度字段前置,JOIN需分清INNER/LEFT语义,授权用户时指定正确host并执行FLUSH PRIVILEGES。
直接上手 MySQL 初级项目,关键不是学完所有语法,而是先跑通一个「增删改查 + 表关联 + 简单业务逻辑」的闭环。下面按真实开发节奏拆解。
怎么建第一个可用的业务库和表(别碰 utf8mb4 和 ENGINE 就错不了)
新手常卡在建库建表就报错,根源是字符集和存储引擎选错。实际项目中,只要避开冷门配置,CREATE DATABASE 和 CREATE TABLE 一行命令就能跑起来:
- 建库用
CREATE DATABASE myapp DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;—— 不写这句,默认可能用latin1,后面存中文直接乱码 - 建表时显式指定
ENGINE=InnoDB,别依赖默认值;MySQL 5.7+ 虽然默认是 InnoDB,但某些 Docker 镜像或旧部署环境仍可能是 MyISAM,不支持事务和外键 - 主键必须有,且推荐用
id BIGINT UNSIGNED AUTO_INCREMENT PRIMARY KEY,别用INT——后期数据量一过百万容易溢出
INSERT / SELECT / WHERE 怎么组合出真实查询(WHERE 条件顺序影响执行效率)
初级项目里 80% 的查询都是单表条件查、多条件 AND 查、带排序分页。重点不是写多炫的 SQL,而是避免几个典型低效写法:
-
SELECT *在业务代码里禁用,哪怕只有 3 个字段也要写全列名,否则加字段或改结构时容易引发隐式错误 - WHERE 中多个条件,把「高区分度字段」放前面,比如
WHERE status = 1 AND create_time > '2024-01-01'比反过来快得多——索引生效更早 - 分页慎用
LIMIT 10000, 20,偏移量大时全表扫描;改成用WHERE id > 12345 LIMIT 20(游标分页),项目初期就能扛住几千条数据
JOIN 写不对会查出重复数据(LEFT JOIN 和 INNER JOIN 的语义边界必须清楚)
用户订单列表、文章带作者名这类需求,一写 JOIN 就多出几倍行数,基本是没理解连接类型的实际行为: