全部学科
NodeJS全栈
nodejs
Python全栈
python
小程序首页
📝 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
单选题

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

A

自动删除不存在的表

B

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

C

自动插入测试数据

D

自动备份数据库

2
多选题

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

A

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

B

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

C

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

D

AutoMigrate 会创建外键约束

3
判断题

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

A

B

4
单选题

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

A

db.HasTable(&User{})

B

db.TableExists("users")

C

db.CheckTable(&User{})

D

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

5
多选题

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

A

HasTable 检查表是否存在

B

HasColumn 检查表中是否存在某列

C

HasIndex 检查表中是否存在索引

D

HasConstraint 检查表中是否存在约束

6
填空题

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

7
单选题

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

A

db.CreateTable(&User{})

B

db.AutoMigrate(&User{})

C

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

D

db.CreateTable(&User{})

8
多选题

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

A

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

B

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

C

需要自动添加缺失的列

D

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

9
判断题

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

A

B

10
填空题

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

11
单选题

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

A

db.HasTable(&User{})

B

db.TableExists("users")

C

db.CheckTable(&User{})

D

db.HasModel("User")

12
判断题

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

A

B

13
多选题

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

A

HasTable

B

HasColumn

C

HasIndex

D

HasConstraint

14
单选题

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

A

db.CreateTable(&User{})

B

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

C

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

D

B 和 C 都可以

15
填空题

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

← 上一个专题 插件系统专题
下一个专题 → 数据库连接池管理专题

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

想查看更多习题和详细解析?
小程序提供完整的题库和详细解析

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

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