欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    61396-Go语言程序设计项目化教程(微课版)6.2 CRUD操作.pptx

    • 资源ID:96686977       资源大小:533.37KB        全文页数:24页
    • 资源格式: PPTX        下载积分:20金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要20金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    61396-Go语言程序设计项目化教程(微课版)6.2 CRUD操作.pptx

    CRUDCRUD操作操作插入数据查询数据01.02.目录更新数据删除数据03.04.01插入数据原生方式插入数据GORM方式插入数据INSERT INTO table_name(field1,field2,.fieldN)VALUES(value1,value2,.valueN);原生方式插入单条数据注:如果想要添加全部数据,并采用自增方式,可以使用(PRIMARY KEY AUTO_INCREMENT),在第一列增加数据时可以将位置参数直接置为0或Null。INSERT INTO table_name(field1,field2,.fieldN)VALUES(valueA1,valueA2,.valueAN),(valueB1,valueB2,.valueBN).;原生方式插入多条数据1原生方式插入数据原生方式插入数据1原生方式插入数据原生方式插入数据package mainimport(database/sql fmt _ main()pool,err:=sql.Open(mysql,root:roottcp(127.0.0.1:3306)/test)if err!=nil fmt.Println(err.Error()else fmt.Println(数据库连接成功)sql1:=create table account(+id int primary key,+username varchar(50),+balance double)_,err=pool.Exec(sql1)if err!=nil fmt.Println(err.Error()else fmt.Println(数据库创建成功)sql2:=insert into account values(1,go,12.34)_,err=pool.Exec(sql2)if err!=nil fmt.Println(err.Error()else fmt.Println(数据1插入成功)sql3:=insert into account values (2,golang,34.56),(3,Go,56.78)_,err=pool.Exec(sql3)if err!=nil fmt.Println(err.Error()else fmt.Println(数据2插入成功)defer pool.Close()运行结果为:数据库连接成功数据库创建成功数据1插入成功数据2插入成功1GORMGORM插入数据插入数据db.HasTable(&User)/检查模型User的表是否存在db.HasTable(users)/检查表users是否存在 u:=User 结构体成员1 类型1 判断是否存在模型或表创建结构体变量保存数据db.Create(u)向表格内插入数据1GORMGORM插入数据插入数据func main()dsn:=root:roottcp(127.0.0.1:3306)/test?charset=utf8&parseTime=True&loc=Local db,err:=gorm.Open(mysql.Open(dsn),&gorm.Config)if err!=nil fmt.Println(数据库连接失败,err.Error()if db.Migrator().HasTable(&Person)=true fmt.Println(表格存在,可以插入数据)u:=Person Id:1,Name:Go,if err:=db.Create(u).Error;err!=nil fmt.Println(数据插入失败,err)else fmt.Println(数据插入成功)package mainimport(fmt gorm.io/driver/mysql gorm.io/gorm)type Person struct Id int Name string02查询数据原生方式查询数据GORM方式查询数据2原生方式查询数据原生方式查询数据func(db*DB)Query(query string,args.interface)(*Rows,error)/多行查询func(db*DB)QueryRow(query string,args.any)*Row/单行查询func(r*Row)Scan(dest.interface)error/将查询结果分别保存到dest参数指定的值中数据查询保存结果集func(rs*Rows)Next()bool/遍历结果集遍历结果集func(r*Row)Scan(dest.any)error/将查询到的结果赋值给目标变量保存结果到变量package mainimport(database/sql fmt _ account struct id int username string balance float64func main()pool,err:=sql.Open(mysql,root:roottcp(127.0.0.1:3306)/test)if err!=nil fmt.Println(err.Error()else fmt.Println(数据库连接成功)/构造sql语句 sql1:=select*from account where id=?/创建a结构体变量,用于保存数据 var a account /查询id=1 err=pool.QueryRow(sql1,1).Scan(&a.id,&a.username,&a.balance)/如果报错,打印错误信息,退出程序 if err!=nil fmt.Printf(查询失败:,err)return /打印结果 fmt.Printf(id t username t balance n)fmt.Printf(%dt%st%fn,a.id,a.username,a.balance)运行结果为:id username balance 1 go 12.3400002原生方式查询单行数据原生方式查询单行数据2原生方式查询多行数据原生方式查询多行数据package mainimport(database/sql fmt _ account struct id int username string balance float64func main()pool,err:=sql.Open(mysql,root:roottcp(127.0.0.1:3306)/test)if err!=nil fmt.Println(err.Error()else fmt.Println(数据库连接成功)sql:=select*from account where id!=?var a account rows,err:=pool.Query(sql,-1)if err!=nil fmt.Printf(查询失败:,err)return defer rows.Close()fmt.Printf(id t username t balance n)for rows.Next()err:=rows.Scan(&a.id,&a.username,&a.balance)if err!=nil fmt.Println(err)return fmt.Printf(%dt%st%fn,a.id,a.username,a.balance)运行结果为:数据库连接成功id username balance 1 go 12.3400002 golang 34.5600003 Go 56.7800002GORMGORM查询数据查询数据db.Take(&user)/没有排序的情况下的第一条记录db.First(&user)/主键升序第一条获取一条记录第一条记录db.Last(&user)/主键降序第一条最后一条记录func(db*DB)Where(query interface,args.interface)(tx*DB)条件查询db.Find(&user)/获取表格内所有记录获取所有记录2GORMGORM查询数据查询数据package mainimport(fmt gorm.io/driver/mysql gorm.io/gorm)type Person struct Id int Name stringfunc main()dsn:=root:roottcp(127.0.0.1:3306)/test?charset=utf8&parseTime=True&loc=Local db,err :=gorm.Open(mysql.Open(dsn),&gorm.Config)if err!=nil fmt.Println(数据库连接失败,err.Error()if db.Migrator().HasTable(&Person)=true fmt.Println(表格存在,可以操作)p:=Person db.Take(&p)/Take()等价于LIMIT 1 fmt.Println(p)db.First(&p)/First()等价于ASC LIMIT 1 fmt.Println(p)db.Last(&p)/Last()等价于DESC LIMIT 1 fmt.Println(p)var ps Person db.Find(&ps)/查询所有 fmt.Println(ps)var names string db.Model(Person).Pluck(name,&names)/查询name列信息 fmt.Println(names)db.Where(id in(?),int1).Take(&p)/select*from people where id=?fmt.Println(p)db.Select(name).Where(id=?,1).Take(&p)/select name from people where id=1 fmt.Println(p)运行结果为:表格存在,可以操作1 Go1 Go1 Go1 Go 2 goGo go1 Go1 Go03更新数据原生方式更新数据GORM方式更新数据3原生方式更新数据原生方式更新数据UPDATE SET 字段 1=值 1,字段 2=值 2.WHERE 子句 ORDER BY 子句 LIMIT 子句构造sql语句db.Exec().RowsAffected()影响行数指要更新的表名称;SET指表中要修改的列名及列值;WHERE表示限定表中要修改的行,也可以不指定,不指定则修改表中所有的行;ORDER BY表示限定表中的行被修改的次序,也可以不做限制;LIMIT表示限定被修改的行数,也可以不做限制。如果要修改一行数据的多个列值,SET子句的每个值都需要用,分隔。func(db*DB)Exec(query string,args.any)(Result,error)注:Exec执行查询,不返回任何行。args用于查询中的任何占位符参数。执行函数package mainimport(database/sql fmt _ main()pool,err:=sql.Open(mysql,root:roottcp(127.0.0.1:3306)/test)if err!=nil fmt.Println(err.Error()else fmt.Println(数据库连接成功)/更新数据 sql:=update account set username=?where id=?ret,err:=pool.Exec(sql,Go语言,1)if err!=nil fmt.Printf(更新失败:%vn,err)return n,err:=ret.RowsAffected()/操作影响的行数 if err!=nil fmt.Printf(获取影响行数失败:%vn,err)return fmt.Printf(更新成功,影响%d行。n,n)运行结果为:数据库连接成功更新成功,影响1行。3原生方式更新数据原生方式更新数据3GORMGORM更新数据更新数据HasTable(dst interface)booldb.Model()/指定db要运行操作的模型 判断表格是否存在第一条记录func(db*DB)Update(column string,value interface)(tx*DB)/使用回调函数更新更新属性最后一条记录获取所有记录func(db*DB)Save(value interface)(tx*DB)/保存更新值在数据库中,如果值没有主键,将插入它 3GORMGORM更新数据更新数据package mainimport(fmt gorm.io/driver/mysql gorm.io/gorm)type Person struct Id int Name stringfunc main()dsn:=root:roottcp(127.0.0.1:3306)/test?charset=utf8&parseTime=True&loc=Local db,err:=gorm.Open(mysql.Open(dsn),&gorm.Config)if err!=nil fmt.Println(数据库连接失败,err.Error()if db.Migrator().HasTable(&Person)=true fmt.Println(表格存在,可以操作)var ps Person db.Find(&ps)/查询原始内容 fmt.Println(ps)/打印原始内容 p:=Person db.Where(id=?,1).Take(&p)/select*from people where id=1 p.Name=更新 db.Save(&p)/update people set name=更新 where id=1 db.Model(Person).Where(id=?,2).Update(name,update)/update people set name=update where id=2 updatePerson:=Person Id:5,Name:updates,db.Model(Person).Where(id?,2).Updates(&updatePerson)/update people set id=5,name=updates where id 2 db.Find(&ps)/再次查询所有 fmt.Println(ps)/再次打印所有内容 运行结果为:表格存在,可以操作1 Go 2 go 3 golang1 更 新 2 update 5 updates04删除数据原生方式删除数据GORM方式删除数据DELETE FROM WHERE 子句 ORDER BY 子句 LIMIT 子句构造sql语句db.Exec().RowsAffected()/RowsAffected返回受更新、插入或删除影响的行数。但并不是每个数据库或数据库驱动程序都支持这一点。影响行数是指定要删除数据的表名称;WHERE子句表示删除操作限定的行条件,如果不指定,则代表删除该表中的所有行;ORDER BY子句表示表中各行将按照子句指定的顺序进行删除,也可以不指定;LIMIT子句用于告知服务器在控制命令被返回到客户端前被删除行的最大值,也可以不指定。4原生方式删除数据原生方式删除数据func(db*DB)Exec(query string,args.any)(Result,error)执行函数package mainimport(database/sql fmt _ main()pool,err:=sql.Open(mysql,root:roottcp(127.0.0.1:3306)/test)if err!=nil fmt.Println(err.Error()else fmt.Println(数据库连接成功)/删除数据 sql:=delete from account where id=?ret,err:=pool.Exec(sql,3)if err!=nil fmt.Printf(删除失败:%vn,err)return n,err:=ret.RowsAffected()/操作影响的行数 if err!=nil fmt.Printf(获取影响行数失败:%vn,err)return fmt.Printf(删除成功,影响:%dn行,n)运行结果为:数据库连接成功删除成功,影响1行。4原生方式删除数据原生方式删除数据4GORMGORM删除数据删除数据func(db*DB)Delete(value interface,conds.interface)(tx*DB)tx=db.getInstance()if len(conds)0 if exprs:=tx.Statement.BuildCondition(conds0,conds1:.);len(exprs)0 tx.Statement.AddClause(clause.WhereExprs:exprs)tx.Statement.Dest=valuereturn tx.callbacks.Delete().Execute(tx)/删除匹配给定的删除值条件,如果该值有主键,则将主键包括在内作为条件判断表格是否存在4GORMGORM删除数据删除数据package mainimport fmtimport gorm.io/driver/mysql import gorm.io/gormtype Person struct Id int Name stringfunc main()dsn:=root:roottcp(127.0.0.1:3306)/test?charset=utf8&parseTime=True&loc=Local db,err:=gorm.Open(mysql.Open(dsn),&gorm.Config)if err!=nil fmt.Println(数据库连接失败,err.Error()if db.Migrator().HasTable(&Person)=true fmt.Println(表格存在,可以操作)var ps Person db.Find(&ps)/查询原始内容 fmt.Println(ps)/打印原始内容 p:=Person db.Where(id=?,1).Take(&p)/select*from people where id=1 db.Delete(&p)/delete from people where id=1 db.Where(name=?,update).Delete(&Person)/delete from people where name=update db.Find(&ps)/再次查询所有 fmt.Println(ps)/再次打印所有内容 运行结果为:表格存在,可以操作1 更新 2 update 5 updates5 updates谢谢观看谢谢观看

    注意事项

    本文(61396-Go语言程序设计项目化教程(微课版)6.2 CRUD操作.pptx)为本站会员(暗伤)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开