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

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

相关推荐
GetcharZp22 分钟前
GitHub 2.4 万 Star!D2 正在重新定义程序员画图方式
后端
zhangxingchao2 小时前
多 Agent 架构到底怎么选?从 Claude Agent Teams、Cognition/Devin 到工程落地原则
前端·人工智能·后端
IT_陈寒2 小时前
SpringBoot那个自动配置的坑,害我排查到凌晨三点
前端·人工智能·后端
ServBay2 小时前
OpenCode 和它的7款必备插件
后端·github·ai编程
ping某2 小时前
逐字节拆解 tcpdump
后端
阿凡9807302 小时前
花 100 dollar,用 Claude 打通 EasyEDA&Fusion 双向同步
后端·程序员
irving同学462382 小时前
从零搭建生产级 RAG:Embedding、Chunking、Hybrid Search 与 Reranker
前端·后端
她的男孩2 小时前
从零搭一个企业后台,为什么我把能力拆成 Starter 和 Plugin
java·后端·架构
胡志辉2 小时前
本地 AI 编码助手从 0 配起来:先选模型,再接 Ollama、VS Code、Claude Code 和 Codex
前端·后端
RainCity2 小时前
Java Swing 自定义组件库分享(七)
java·笔记·后端