好,继续第二节,我们开始进入真正的后端核心能力:数据库 + CRUD。这一节非常关键,因为:
👉 80% 后端工作 = CRUD + 数据库
🚀 第2节目标(必须达成)
学完你要能做到:
✅ 会写基本 SQL
✅ 能用 Go 操作数据库
✅ 能写完整 CRUD 接口
✅ 面试能讲清分页 / 表设计
🧠 一、数据库基础(MySQL)
👉 主流关系型数据库:MySQL
1️⃣ 一张表长这样
CREATE TABLE user (
id INT PRIMARY KEY AUTO_INCREMENT,
username VARCHAR(50),
password VARCHAR(100),
created_at DATETIME
);
2️⃣ CRUD 对应 SQL(必须会背)
✅ 查(Read)
SELECT * FROM user;
✅ 增(Create)
INSERT INTO user (username, password)
VALUES ('tom', '123456');
✅ 改(Update)
UPDATE user
SET password = 'new123'
WHERE id = 1;
✅ 删(Delete)
DELETE FROM user WHERE id = 1;
💬 面试表达(一定要会):
后端 CRUD 本质就是对数据库的增删改查操作,通过 SQL 或 ORM 实现。
⚠️ 二、SQL 面试重点(你必须掌握)
1️⃣ 分页(高频!)
SELECT * FROM user LIMIT 10 OFFSET 20;
👉 含义:
跳过20条
取10条
💬 面试加分:
大数据场景下会用"游标分页"优化性能,比如 WHERE id > xxx LIMIT 10
2️⃣ 条件查询
SELECT * FROM user WHERE username = 'tom';
3️⃣ 排序
SELECT * FROM user ORDER BY id DESC;
🚀 三、Go 操作数据库(核心)
这里我们用 ORM:
👉 GORM
👉 理解一句话: 不用写 SQL,用 Go 操作数据库
1️⃣ 安装
go get -u gorm.io/gorm
go get -u gorm.io/driver/mysql
2️⃣ 连接数据库
dsn := "user:password@tcp(127.0.0.1:3306)/test"
db, err := gorm.Open(mysql.Open(dsn), &gorm.Config{})
if err != nil {
panic("连接失败")
}
3️⃣ 定义模型(重点)
type User struct {
ID int
Username string
Password string
}
👉 会自动映射表
4️⃣ CRUD 实战(必须掌握)
✅ 新增
user := User{Username: "tom", Password: "123"}
db.Create(&user)
✅ 查询
var user User
db.First(&user, 1)
✅ 更新
db.Model(&user).Update("password", "new123")
✅ 删除
db.Delete(&user, 1)
🔥 四、结合 Gin 写接口(重点中的重点)
👉 做一个真实接口:获取用户
r.GET("/user/:id", func(c *gin.Context) {
id := c.Param("id")
var user User
db.First(&user, id)
c.JSON(200, user)
})
👉 创建用户
r.POST("/user", func(c *gin.Context) {
var user User
c.ShouldBindJSON(&user)
db.Create(&user)
c.JSON(200, user)
})
🧠 五、这一节的核心理解
你一定要理解👇
👉 后端本质流程
前端请求 → 后端接口 → 数据库 → 返回数据
👉 你现在已经具备:
✔ 写接口
✔ 查数据库
✔ 返回 JSON
👉 已经是初级后端能力了
🎯 六、面试这一节会怎么问?
1️⃣ ORM 是什么?
💬 标准回答:
ORM 是对象关系映射,用代码操作数据库,避免手写 SQL,提高开发效率。
2️⃣ limit offset 有什么问题?
💬 答:
深分页性能差
会扫描大量数据
3️⃣ 如何优化分页?
💬 答:
使用基于 id 的游标分页,比如 WHERE id > xxx
🧩 七、必须做的练习(非常关键)
📝 练习1
写接口:
👉 GET /users
返回用户列表(数组)
📝 练习2
写接口:
👉 DELETE /user/:id
📝 练习3(重点)
实现分页:
👉 GET /users?page=1&pageSize=10
🚀 下一步(开始拉开差距)
你如果这一节OK,我们进入:
👉 第3节:登录认证(JWT)+ 中间件(面试高频)
或者你可以说:
👉 "带我写完整 CRUD 项目(可写简历)"
👉 "检查我代码"
👉 "继续第3节"
我会带你直接到能面试 + 能接项目的水平 💪