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

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

相关推荐
金銀銅鐵6 小时前
[Java] 用 GUI 展示 EnumSet 增减元素时的内部变化(上)
java·后端·ai编程
念何架构之路7 小时前
go-grpc设计思想
开发语言·后端·golang
system_error_x7 小时前
SpringBoot 集成 Thymeleaf 简洁入门
java·spring boot·后端
步行cgn9 小时前
Spring MVC 视图机制的核心接口与类
java·开发语言·后端·spring·mvc
码事漫谈10 小时前
AI 读你的提示词,其实很没耐心
后端
用户83562907805110 小时前
如何使用 Python 格式化 Excel 单元格中的长文本
后端·python
我命由我1234510 小时前
Python 开发 - Python 的 pathlib
java·开发语言·后端·python·学习·java-ee·学习方法
IT_陈寒10 小时前
Java性能优化完全指南
前端·人工智能·后端
电子IT笔记11 小时前
对接群晖NAS,上传和删除踩坑记录
前端·后端
Mk5987811 小时前
P4:把 Agent 的记忆搬进 Redis —— AgentScope-Java 工程化实战
后端