go学习day two

好,继续第二节,我们开始进入真正的后端核心能力:数据库 + 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节”

我会带你直接到能面试 + 能接项目的水平 💪

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值