首页/ 学科题库/ gorm/ CRUD 基础操作专题测试
gorm 模拟试卷

CRUD 基础操作专题测试

18 题 40 分钟 难度:★
  • 创建记录(Create):Create 方法、批量创建 CreateInBatches、主键回填
  • 查询记录(Read):First/Take/Last、Where 条件、Or/And 组合、Find 查询
  • 更新记录(Update):Update 单字段、Updates 多字段、Save 保存、零值处理
  • 删除记录(Delete):Delete 方法、软删除、Unscoped 永久删除
  • 查询条件构建:链式调用、条件组合、排序分页

试卷习题(18 题)

参考答案在文末
判断题
1
判断题

db.Find(&users) 不加任何条件会查询表中的所有记录。

A

对

B

错

2
判断题

db.Save(&user) 会更新结构体中的所有字段,包括零值字段。

A

对

B

错

3
判断题

使用 Updates 方法传入结构体时,零值字段(如 0、空字符串)不会被更新到数据库。

A

对

B

错

4
判断题

使用 Delete 方法删除记录后,可以通过 result.RowsAffected 获取删除的记录数。

A

对

B

错

单选题
5
单选题

GORM 默认对包含 DeletedAt 字段的模型执行什么类型的删除?

A

硬删除,直接从数据库删除

B

软删除,将 DeletedAt 设置为当前时间

C

不执行删除,返回错误

D

将记录标记为无效状态

6
单选题

GORM 的 Update 方法和 Updates 方法的主要区别是什么?

A

Update 更新单字段,Updates 更新多字段

B

Update 需要指定列名,Updates 从结构体提取

C

Update 用于单条记录,Updates 用于批量更新

D

两者完全相同,只是命名不同

7
单选题

以下哪个是正确的 GORM Where 查询方式?

A

db.Where("name = ?", "张三").Find(&users)

B

db.Where("name", "张三").Find(&users)

C

db.Where(name = "张三").Find(&users)

D

db.Where("name = '张三'").Find(&users)

8
单选题

db.First(&user) 如果没有找到记录,会返回什么?

A

nil

B

gorm.ErrRecordNotFound

C

空结构体

D

panic

9
单选题

db.Where(map[string]interface{}{"name": "A", "age": 18}) 的查询条件是什么?

A

name = "A" AND age = 18

B

name = "A" OR age = 18

C

只查询 name = "A"

D

只查询 age = 18

10
单选题

使用 db.Create(&user) 创建记录后,user 对象的 ID 字段会怎样?

A

保持原值不变

B

自动填充数据库返回的主键值

C

被设置为 0

D

返回错误

11
单选题

db.Where("name = ?", "A").Or("name = ?", "B").Find(&users) 的 SQL 等价语句是?

A

SELECT * FROM users WHERE name = "A" OR name = "B"

B

SELECT * FROM users WHERE name = "A" AND name = "B"

C

先查询 A 再查询 B

D

语法错误

12
单选题

db.First(&user) 和 db.Take(&user) 的主要区别是什么?

A

First 按主键排序取第一条,Take 无排序

B

First 返回错误如果有多条,Take 不返回

C

两者完全相同

D

Take 只能用于软删除模型

多选题
13
多选题

在 GORM 中,如何执行真正的物理删除(硬删除)?

A

db.Unscoped().Delete(&user)

B

db.Delete(&user, id)

C

db.Where("id = ?", id).Unscoped().Delete(&User{})

D

db.HardDelete(&user)

14
多选题

以下哪些是 GORM Delete 方法的正确调用方式?

A

db.Delete(&user, 1)

B

db.Where("id = ?", 1).Delete(&User{})

C

db.Delete(User{}, 1)

D

(&user).Delete()

15
多选题

以下哪些是 GORM 支持的批量创建方式?

A

db.Create([]User{user1, user2})

B

db.CreateInBatches(users, 100)

C

循环调用 db.Create(&u)

D

db.BulkCreate(users)

16
多选题

以下哪些是 GORM 支持的查询条件构建方式?

A

db.Where("age > ?", 18).Where("status = ?", 1)

B

db.Where("age > ? AND status = ?", 18, 1)

C

db.Where(map[string]interface{}{"age": 18, "status": 1})

D

db.Where("age > 18").Or("status = 1")

17
多选题

以下哪些是 GORM 支持的更新方式?

A

db.Model(&user).Update("name", "新值")

B

db.Model(&user).Updates(User{Name: "新值"})

C

db.Save(&user) 保存整个结构体

D

db.Update(&user) 直接更新

填空题
18
填空题

使用方法可以构建否定条件,如 db.Not("status = ?", 1) 等价于。

参考答案
1.正确 2.正确 3.正确 4.正确 5.B 6.B 7.A 8.B 9.A 10.B 11.A 12.A 13.A;C 14.A;B 15.A;B;C 16.A;B;C;D 17.A;B;C 18.Not;status != 1
想在手机上在线作答这套卷子?
使用微信 卷王开发者小程序/App,首页顶部扫一扫识别二维码,即可限时作答并自动判分。
了解产品 App
下一套 → GORM 中级技能认证测试