首页/ 学科题库/ gorm/ 数据库迁移基础专题
gorm 专题精讲

数据库迁移基础专题

1 篇文章 15 道配套习题

数据库迁移基础专题

专题说明

本专题聚焦于 GORM 数据库迁移的核心操作。通过 15 道精选题目,系统讲解 AutoMigrate 自动迁移的使用方法与限制、表结构检查方法、手动创建表流程等知识点。帮助读者理解开发环境快速迭代和生产环境迁移的最佳实践。

学习目标

  1. 理解 AutoMigrate 的作用和保护机制
  2. 掌握表结构检查方法(HasTable、HasColumn、HasIndex、HasConstraint)
  3. 学会使用 Migrator 接口手动创建表
  4. 理解 AutoMigrate 与 CreateTable 的区别和适用场景

学习内容

本专题涵盖以下知识点:

  • AutoMigrate 使用:自动创建表、添加缺失列、索引和外键、保护机制
  • 表结构检查:HasTable、HasColumn、HasIndex、HasConstraint 方法
  • 手动创建表:Migrator().CreateTable、与 AutoMigrate 的区别、适用场景

学习建议

  1. 在开发环境中多使用 AutoMigrate 快速迭代模型定义
  2. 理解 AutoMigrate 不会删除已存在列的保护机制
  3. 学习 Migrator 接口的完整 API,为生产环境迁移做准备
  4. 了解生产环境应使用专门的迁移工具(如 golang-migrate)

配套习题(15 题)

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

CreateTable 方法在表已存在时会返回错误,而 AutoMigrate 在表已存在时会跳过创建。

A

对

B

错

2
判断题

db.Migrator().HasColumn(&User{}, "name") 可以检查表中是否存在指定列。

A

对

B

错

3
判断题

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

A

对

B

错

单选题
4
单选题

使用 GORM 手动创建表应该使用哪个方法?

A

db.CreateTable(&User{})

B

db.AutoMigrate(&User{})

C

db.Migrator().CreateTable(&User{})

D

db.Table("users").Create(&User{})

5
单选题

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

A

自动删除不存在的表

B

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

C

自动插入测试数据

D

自动备份数据库

6
单选题

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

A

db.HasTable(&User{})

B

db.TableExists("users")

C

db.CheckTable(&User{})

D

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

7
单选题

以下哪个方法可以检查数据库中是否存在指定表?

A

db.HasTable(&User{})

B

db.TableExists("users")

C

db.CheckTable(&User{})

D

db.HasModel("User")

8
单选题

如何手动创建 User 模型对应的数据库表?

A

db.CreateTable(&User{})

B

db.Migrator().CreateTable(&User{})

C

db.Exec("CREATE TABLE users...")

D

B 和 C 都可以

多选题
9
多选题

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

A

HasTable 检查表是否存在

B

HasColumn 检查表中是否存在某列

C

HasIndex 检查表中是否存在索引

D

HasConstraint 检查表中是否存在约束

10
多选题

以下哪些场景适合使用手动创建表而不是 AutoMigrate?

A

需要在创建表前后执行自定义 SQL

B

需要精确控制表结构和约束

C

需要自动添加缺失的列

D

需要在创建表时初始化数据

11
多选题

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

A

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

B

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

C

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

D

AutoMigrate 会创建外键约束

12
多选题

以下哪些是 GORM Migrator 接口提供的方法?

A

HasTable

B

HasColumn

C

HasIndex

D

HasConstraint

填空题
13
填空题

检查表中是否存在某列可以使用 db.Migrator().(&User{}, ) 方法。

14
填空题

手动创建表的完整流程是:先使用 db.Migrator().(&User{}) 检查表是否存在,如果不存在则调用 db.Migrator().(&User{}) 创建。

15
填空题

删除表可以使用 db.Migrator().(&User{{}}) 或 。

参考答案
1.正确 2.正确 3.错误 4.C 5.B 6.A 7.A 8.D 9.A;B;C;D 10.A;B;D 11.A;B;D 12.A;B;C;D 13.HasColumn;"name" 14.HasTable;CreateTable 15.DropTable;db.Exec("DROP TABLE users")
想在手机上刷这套专题的真题?
使用微信 卷王开发者小程序/App,首页顶部扫一扫识别二维码,即可解锁本专题全部配套练习与错题本。
了解产品 App
← 上一个专题 插件系统专题 下一个专题 → 数据库连接池管理专题