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节"

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

相关推荐
AI袋鼠帝2 小时前
腾讯这只小程序Agent🦀,帮我找到了最强日程、文件、知识管理姿势
后端
努力的小郑2 小时前
突发!Claude Code 51万行源码全网裸奔:一场史诗级“开源”事故,国内大厂笑麻了
前端·后端·ai编程
HashTang2 小时前
Claude Code 源码中 REPL.tsx 深度解析:一个 5005 行 React 组件的架构启示
前端·后端·ai编程
thatway19893 小时前
ARM TFM-1介绍及代码下载运行适配
后端
千寻girling4 小时前
不知道 Java 全栈 + AI 编程有没有搞头 ?
前端·人工智能·后端
小码哥_常4 小时前
Spring Boot 实现网络限速:让流量“收放自如”
后端
johnrui5 小时前
SpringBoot-JdbcTemplate
java·spring boot·后端
Victor3565 小时前
MongoDB(72)如何创建用户和角色?
后端
Victor3565 小时前
MongoDB(71)如何启用MongoDB身份验证?
后端