CRUD操作插入数据查询数据01.02.目录更新数据删除数据03.04.01插入数据•原生方式插入数据•GORM方式插入数据INSERTINTOtable_name(field1,field2,...fieldN)VALUES(value1,value2,...valueN);原生方式插入单条数据注:如果想要添加全部数据,并采用自增方式,可以使用(PRIMARYKEYAUTO_INCREMENT),在第一列增加数据时可以将位置参数直接置为"0"或"Null"。INSERTINTOtable_name(field1,field2,...fieldN)VALUES(valueA1,valueA2,...valueAN),(valueB1,valueB2,...valueBN)......;原生方式插入多条数据1原生方式插入数据1原生方式插入数据packagemainimport("database/sql""fmt"_"github.com/go-sql-driver/mysql")funcmain(){pool,err:=sql.Open("mysql","root:root@tcp(127.0.0.1:3306)/test")iferr!=nil{fmt.Println(err.Error())}else{fmt.Println("数据库连接成功")}sql1:="createtableaccount("+"idintprimarykey,"+"usernamevarchar(50),"+"balancedouble)"_,err=pool.Exec(sql1)iferr!=nil{fmt.Println(err.Error())}else{fmt.Println("数据库创建成功")sql2:=`insertintoaccountvalues(1,"go",12.34)`_,err=pool.Exec(sql2)iferr!=nil{fmt.Println(err.Error())}else{fmt.Println("数据1插入成功")}sql3:=`insertintoaccountvalues(2,"golang",34.56),(3,"Go",56.78)`_,err=pool.Exec(sql3)iferr!=nil{fmt.Println(err.Error())}else{fmt.Println("数据2插入成功")}}deferpool.Close()}运行结果为:数据库连接成功数据库创建成功数据1插入成功数据2插入成功1GORM插入数据db.HasTable(&User{})//检查模型User的表是否存在db.HasTable("users")//检查表users是否存在u:=User{结构体成员1类型1……}判断是否存在模型或表创建结构体变量保存数据db.Create(u)向表格内插入数据1GORM插入数据funcmain(){dsn:="root:root@tcp(127.0.0.1:3306)/test?charset=utf8&parseTime=True&loc=Local"db,err:=gorm.Open(mysql.Open(dsn),&gorm.Config{})iferr!=nil{fmt.Println("数据库连接失败",err.Error())}ifdb.Migrator().HasTable(&Person{})==true{fmt.Println("表格存在,可以插入数据")u:=Person{Id:1,Name:"Go",}iferr:=db.Create(u).Error;err!=nil{fmt.Println("数据插入失败",err)}else{fmt.Println("数据插入成功")}}}packagemainimport("fmt""gorm.io/driver/mysql""gorm.io/gorm")typePersonstruct{IdintNamestring}02查询数据•原生方式查询数据•GORM方式查询数据2原生方式查询数据func(db*DB)Query(querystring,args...interface{})(*Rows,error){}//多行查询func(db*DB)QueryRow(querystring,args...any)*Row{}//单行查询func(r*Row)Scan(dest...interface{})error//将查询结果分别保存到dest参数指定的值中数据查询保存结果集func(rs*Rows)Next()bool{}//遍历结果集遍历结果集func(r*Row)Scan(dest...any)error{}//将查询到的结果赋值给目标变量保存结果到变量packagemainimport("database/sql""fmt"_"github.com/go-sql-driver/mysql")typeaccountstruct{idintusernamestringbalancefloat64}funcmain(){pool,err:=sql.Open("mysql","root:root@tcp(127.0.0.1:3306)/test")iferr!=nil{fmt.Println(err.Error())}else{fmt.Println("数据库连接成功")}//构造sql语句sql1:="select*fromaccountwhereid=?"//创建a结构体变量,用于保存数据varaaccount//查询id=1err=pool.QueryRow(sql1,1).Scan(&a.id,&a.username,&a.balance)//如果报错,打印错误信息,退出程序iferr!=nil{fmt.Printf("查询失败:",err)return}//打印结果fmt.Printf("id\tusername\tbalance\n")fmt.Printf("%d\t%s\t%f\n",a.id,a.username,a.balance)}运行结果为:idusernamebalance1go12.3400002原生方式查询单行数据2原生方式查询多行数据packagemainimport("database/sql""fmt"_"github.com/go-sql-driver/mysql")typeaccountstruct{idintusernamestringbalancefloat64}funcmain(){pool,err:=sql.Open("mysql","root:root@tcp(127.0.0.1:3306)/test")iferr!=nil{fmt.Println(err.Error())}else{fmt.P...