全部学科
Python全栈
python
NodeJS全栈
nodejs
小程序首页

CRUD 基础操作专题测试

18 题 40 分钟 难度:

考察知识点

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

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

A

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

B

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

C

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

D

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

2
多选题

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

A

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

B

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

C

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

D

db.Update(&user) 直接更新

3
判断题

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

A

B

4
单选题

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

A

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

B

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

C

不执行删除,返回错误

D

将记录标记为无效状态

5
多选题

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

A

db.Unscoped().Delete(&user)

B

db.Delete(&user, id)

C

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

D

db.HardDelete(&user)

6
判断题

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

A

B

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
多选题

以下哪些是 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")

9
填空题

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

10
单选题

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

A

保持原值不变

B

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

C

被设置为 0

D

返回错误

11
多选题

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

A

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

B

db.CreateInBatches(users, 100)

C

循环调用 db.Create(&u)

D

db.BulkCreate(users)

12
单选题

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

A

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

B

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

C

两者完全相同

D

Take 只能用于软删除模型

13
判断题

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

A

B

14
多选题

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

A

db.Delete(&user, 1)

B

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

C

db.Delete(User{}, 1)

D

(&user).Delete()

15
单选题

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

语法错误

16
多选题

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

17
单选题

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

A

nil

B

gorm.ErrRecordNotFound

C

空结构体

D

panic

18
判断题

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

A

B

下一个试卷 → GORM 中级技能认证测试

📝 发现内容有误?点击此处直接编辑

想参加完整模拟考试?
小程序提供计时考试、自动评分和详细解析

长按或扫描二维码,立即体验

扫码体验小程序
马上就来
使用微信扫描二维码
立即体验完整题库