本教材由知了传课辛苦制作而成,仅供学习使用,请勿用于商业用途!如进行转载请务必注明出处!谢谢!

DDL操作

对数据库,表,字段等的操作,这里指的DDl不包括数据库

一、数据库

  1. 连接数据库
// 引入gorm及驱动包 "github.com/jinzhu/gorm" _ "github.com/jinzhu/gorm/dialects/mysql" db,db_err := gorm.Open("mysql","root:Qazwsx123@[tcp](localhost:3306)/test_gorm?charset=utf8&parseTime=True&loc=Local") if err!= nil{ panic(err) } defer db.Close() // 关闭连接 // loc=Local:表示根据本地时区走 // parseTime:处理time.Time

二、表

1.创建表

type User struct { Id int Name string Age int } // 创建表 db.Table("user").CreateTable(&User{}) // 指定表名 db.CreateTable(&User{}) // 不指定表名,模型后面会加个s

2.删除表

db.DropTable(&User{}) // 使用模型名
db.DropTable("users") // 直接使用表名

db.DropTableIfExists(&User{}) // 先判断是否存在再删除,可以接受多个参数,模型和字符串都可以

3.检查表是否存在

is_has := db.HasTable(&User{}) // 使用模型

is_has := db.HasTable("users") // 使用表名
fmt.Println(is_has)

三、列(不建议进行操作,直接在模型上指定迁移即可)

1.修改列

// 修改模型User的description列的数据类型为text
db.Model(&User{}).ModifyColumn(“description”, “text”)

2.删除列

// 删除模型User的description列
db.Model(&User{}).DropColumn(“description”)

3.添加外键

db.Model(&User{}).AddForeignKey("city_id", "cities(id)", "RESTRICT", "RESTRICT")

// 第一个参数: 外键字段
// 第二个参数 : 外键表(字段)
// 第三个参数 : ONDELETE
// 第四个参数 : ONUPDATE

4.索引

// 为name, age列添加索引idx_user_name_age
db.Model(&User{}).AddIndex(“idx_user_name_age”, “name”, “age”)

// 为多列添加唯一索引
db.Model(&User{}).AddUniqueIndex(“idx_user_name_age”, “name”, “age”)

四、数据库迁移

1.自动迁移

自动迁移仅仅会创建表,添加缺少列和索引,并且不会改变现有列的类型或删除未使用的列以保护数据

db.AutoMigrate(&User{})

db.AutoMigrate(&User{}, &Product{}, &Order{})

// 创建表时添加表后缀
db.Set("gorm:table_options", "ENGINE=InnoDB").AutoMigrate(&User{})

1410人已阅读,今天你学习了吗?

添加新回复
目录