全部学科
Python全栈
python
NodeJS全栈
nodejs

GORM 初级技能认证测试

20 题 45 分钟 难度:★

考察知识点

本试卷覆盖以下核心知识点:

  1. GORM 基础概念(5题)
      • 框架简介与安装配置
      • 数据库连接与配置
      • 模型定义基础
      • 命名约定与映射规则
  2. CRUD 基础操作(5题)
      • 创建记录(Create)
      • 查询记录(Read)
      • 更新记录(Update)
      • 删除记录(Delete)
      • 查询条件构建
  3. 模型标签与字段配置(5题)
      • gorm tag 使用
      • 字段默认值配置
      • 字段忽略与只读
      • 索引标签配置
  4. 数据库迁移基础(5题)
      • AutoMigrate 自动迁移
      • 表结构检查
      • 手动创建表
💡 参考答案在文末
判断题
1

在 Go 项目中安装 GORM 可以使用 go get -u gorm.io/gorm 命令。

A

B

2

一个字段的 gorm tag 可以同时配置多个选项,如 gorm:"column:user_name;type:varchar(100);index"

A

B

3

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

A

B

4

AutoMigrate 适合在生产环境中使用,因为它会自动处理数据迁移和兼容性。

A

B

单选题
5

GORM 的 AutoMigrate 方法的主要作用是什么?

A

自动删除不存在的表

B

自动创建表和添加缺失的列与索引

C

自动插入测试数据

D

自动备份数据库

6

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

A

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

B

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

C

不执行删除,返回错误

D

将记录标记为无效状态

7

如何在 GORM 模型中为字段设置数据库默认值?

A

gorm:"default:'张三'"

B

default:"张三"

C

gorm:"value:'张三'"

D

sql:"default:张三"

8

在 GORM 模型中,如何为字段设置数据库列名?

A

json:"column_name"

B

gorm:"column:column_name"

C

db:"column_name"

D

sql:"column_name"

9

使用 GORM 连接 MySQL 数据库,应该使用以下哪个方法?

A

gorm.Connect("mysql", dsn)

B

gorm.Open(mysql.Open(dsn), &gorm.Config{})

C

gorm.NewMySQL(dsn)

D

mysql.Connect(dsn)

10

如何检查数据库中是否存在某个表?

A

db.HasTable(&User{})

B

db.TableExists("users")

C

db.CheckTable(&User{})

D

db.Table("users").Exists()

11

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

A

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

B

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

C

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

D

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

12

以下关于 GORM 框架的描述,哪一项是正确的?

A

GORM 是 Python 语言中的 ORM 框架

B

GORM 支持自动迁移和关联关系管理

C

GORM 只能用于 MySQL 数据库

D

GORM 不支持事务操作

多选题
13

以下关于 AutoMigrate 的使用,哪些是正确的?

A

db.AutoMigrate(&User{}) 迁移单个模型

B

db.AutoMigrate(&User{}, &Product{}) 迁移多个模型

C

AutoMigrate 会自动删除已不存在的字段

D

AutoMigrate 会创建外键约束

14

以下哪些是 GORM 提供的表结构检查方法?

A

HasTable 检查表是否存在

B

HasColumn 检查表中是否存在某列

C

HasIndex 检查表中是否存在索引

D

HasConstraint 检查表中是否存在约束

15

以下哪些是 GORM 框架的核心功能?

A

自动迁移数据库表结构

B

关联关系管理(一对一、一对多、多对多)

C

钩子函数(BeforeCreate、AfterFind 等)

D

完全替代原生 SQL 查询

16

以下哪些是 GORM 的 gorm tag 支持的配置项?

A

column 指定列名

B

type 指定数据库类型

C

primaryKey 设置为主键

D

json 设置 JSON 格式

17

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

A

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

B

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

C

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

D

db.Update(&user) 直接更新

18

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

A

db.Unscoped().Delete(&user)

B

db.Delete(&user, id)

C

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

D

db.HardDelete(&user)

19

以下关于 GORM 默认值标签的描述,哪些是正确的?

A

默认值在 AutoMigrate 时应用到数据库

B

插入记录时,如果字段为空会自动使用默认值

C

默认值只在数据库层面生效,不影响 GORM 行为

D

可以使用 current_timestamp 设置时间默认值

填空题
20

连接 MySQL 数据库时,DSN(Data Source Name) 的标准格式为____________

参考答案
1.正确 2.正确 3.正确 4.错误 5.B 6.B 7.A 8.B 9.B 10.A 11.B 12.B 13.A;B;D 14.A;B;C;D 15.A;B;C 16.A;B;C 17.A;B;C 18.A;C 19.A;B;D 20.用户名:密码@tcp(主机:端口)/数据库名?参数
想在手机上练习这套试卷?
使用微信卷王开发者小程序,打开首页顶部扫码功能识别二维码
← 上一套试卷 GORM 中级技能认证测试
下一套试卷 → GORM 基础概念专题测试
扫码体验小程序
加载中
想在手机上刷题学习?
使用微信卷王开发者小程序,打开首页顶部扫码功能识别二维码