专栏电商日志财经减肥爱情
投稿投诉
爱情常识
搭配分娩
减肥两性
孕期塑形
财经教案
论文美文
日志体育
养生学堂
电商科学
头戴业界
专栏星座
用品音乐

MySQLMySQL8。0进阶操作JSON

  文章目录
  插入JSON
  检索JSON
  JSON函数
  1。优雅浏览
  2。查找
  3。修改
  3。1。JSONSET()
  3。2。JSONINSERT()
  3。3。JSONREPLACE()
  4。删除
  5。其他函数
  此学习文是基于MySQL8。0写的
  得益于大神朋友的悉心指导解决不少坑,才写出此文,向大神奉上膝盖
  要在MySQL中存储数据,就必须定义数据库和表结构(schema),这是一个主要的限制。为了应对这一点,从MySQL5。7开始,MySQL支恃了JavaScript对象表示(JavaScriptObjectNotation,JSON)数据类型。之前,这类数据不是单独的数据类型,会被存储为字符串。新的JSON数据类型提供了自动验证的JSON文档以及优化的存储格式。
  JSON文档以二进制格式存储,它提供以下功能:
  对文档元素的快速读取访问。
  当服务器再次读取JSON文档时,不需要重新解析文本获取该值。
  通过键或数组索引直接查找子对象或嵌套值,而不需要读取文档中的所有值。
  创建一个测试表
  mysqlcreatetableemployees。empdetails(
  empnointprimarykey,
  detailsjson
  );
  QueryOK,0rowsaffected(0。17sec)
  mysqldescemployees。empdetails;
  FieldTypeNullKeyDefaultExtra
  empnoint(11)NOPRINULL
  detailsjsonYESNULL
  2rowsinset(0。00sec)
  检索JSON
  可以使用和运算符检索JSON列的字段:
  mysqlselectempno,details。address。pinpin
  fromemployees。empdetails;
  empnopin
  1560103
  1rowinset(0。00sec)
  如果不用引号检索数据,可以使用运算符(推荐此方式)
  mysqlselectempno,details。address。pinpin
  fromemployees。empdetails;
  empnopin
  1560103
  1rowinset(0。00sec)
  JSON函数
  MySQL提供了许多处理JSON数据的函数,让我们看看最常用的几种函数。
  1。优雅浏览
  想要以优雅的格式显示JSON值,请使用JSONPRETTY()函数
  mysqlselectempno,jsonpretty(details)
  fromemployees。empdetailsG
  1。row
  empno:1
  jsonpretty(details):{
  email:abcexample。com,
  phone:11800000000,
  address:{
  pin:560103,
  city:Bangalore,
  line1:abc,
  line2:xyzstreet
  },
  location:IN
  }
  1rowinset(0。00sec)
  2。查找
  可以在WHERE子句中使用colpath运算符来引用JSON的某一列
  mysqlselectempno,details
  fromemployees。empdetails
  wheredetails。address。pin560103;
  empnodetails
  1{email:abcexample。com,phone:11800000000,address:{pin:560103,city:Bangalore,line1:abc,line2:xyzstreet},location:IN}
  1rowinset(0。00sec)
  也可以使用JSONCONTAINS函数查询数据。如果找到了数据,则返回1,否则返回0
  mysqlselectjsoncontains(details。address。pin,560103)
  fromemployees。empdetails;
  jsoncontains(details。address。pin,560103)
  1
  1rowinset(0。00sec)
  如何查询一个key?使用JSONCONTAINSPATH函数检查address。line1是否存在
  mysqlselectjsoncontainspath(details,one,。address。line1)
  fromemployees。empdetails;
  jsoncontainspath(details,one,。address。line1)
  1
  1rowinset(0。00sec)
  one表示至少应该存在一个键,检查address。line1或者address。line2是否存在
  mysqlselectjsoncontainspath(details,one,。address。line1,。address。line2)
  fromemployees。empdetails;
  jsoncontainspath(details,one,。address。line1,。address。line2)
  1
  1rowinset(0。00sec)
  如果要检查address。line1或者address。line5是否同时存在,可以使用all,而不是one
  mysqlselectjsoncontainspath(details,all,。address。line1,。address。line5)
  fromemployees。empdetails;
  jsoncontainspath(details,all,。address。line1,。address。line5)
  0
  1rowinset(0。00sec)
  3。修改
  可以使用三种不同的函数来修改数据:JSONSET()、JSONINSERT()和JSONREPLACE()。在MySQL8之前的版本中,我们还需要对整个列进行完整的更新,这并不是最佳的方法。
  3。1。JSONSET()
  替换现有值并添加不存在的值
  mysqlupdateemployees。empdetails
  setdetailsjsonset(details,。address。pin,560100,。nickname,kai)
  whereempno1;
  QueryOK,1rowaffected(0。01sec)
  Rowsmatched:1Changed:1Warnings:0
  mysqlselectempno,jsonpretty(details)
  fromemployees。empdetailsG
  1。row
  empno:1
  jsonpretty(details):{
  email:abcexample。com,
  phone:11800000000,
  address:{
  pin:560100,
  city:Bangalore,
  line1:abc,
  line2:xyzstreet
  },
  location:IN,
  nickname:kai
  }
  1rowinset(0。00sec)
  3。2。JSONINSERT()
  插入值,但不替换现有值
  在这种情况下,。address。pin不会被更新,只会添加一个新的字段。address。line4
  mysqlupdateemployees。empdetails
  setdetailsjsoninsert(details,。address。pin,560132,。address。line4,AWing)
  whereempno1;
  QueryOK,1rowaffected(0。01sec)
  Rowsmatched:1Changed:1Warnings:0
  mysqlselectempno,jsonpretty(details)
  fromemployees。empdetailsG
  1。row
  empno:1
  jsonpretty(details):{
  email:abcexample。com,
  phone:11800000000,
  address:{
  pin:560100,
  city:Bangalore,
  line1:abc,
  line2:xyzstreet,
  line4:AWing
  },
  location:IN,
  nickname:kai
  }
  1rowinset(0。01sec)
  3。3。JSONREPLACE()
  仅替换现有值
  在这种情况下,。address。line5不会被添加,只有。address。pin会被更新
  mysqlupdateemployees。empdetails
  setdetailsjsonreplace(details,。address。pin,560132,。address。line5,Landmark)
  whereempno1;
  QueryOK,1rowaffected(0。00sec)
  Rowsmatched:1Changed:1Warnings:0
  mysqlselectempno,jsonpretty(details)
  fromemployees。empdetailsG
  1。row
  empno:1
  jsonpretty(details):{
  email:abcexample。com,
  phone:11800000000,
  address:{
  pin:560132,
  city:Bangalore,
  line1:abc,
  line2:xyzstreet,
  line4:AWing
  },
  location:IN,
  nickname:kai
  }
  1rowinset(0。00sec)
  4。删除
  JSONREMOVE能从JSON文档中删除数据
  mysqlupdateemployees。empdetails
  setdetailsjsonremove(details,。address。line4)
  whereempno1;
  QueryOK,1rowaffected(0。01sec)
  Rowsmatched:1Changed:1Warnings:0
  mysqlselectempno,jsonpretty(details)
  fromemployees。empdetailsG
  1。row
  empno:1
  jsonpretty(details):{
  email:abcexample。com,
  phone:11800000000,
  address:{
  pin:560132,
  city:Bangalore,
  line1:abc,
  line2:xyzstreet
  },
  location:IN,
  nickname:kai
  }
  1rowinset(0。00sec)
  5。其他函数
  JSONKEYS():获取JSON文档中的所有键
  mysqlselectjsonkeys(details),jsonkeys(details。address)
  fromemployees。empdetails
  whereempno1;
  jsonkeys(details)jsonkeys(details。address)
  〔email,phone,address,location,nickname〕〔pin,city,line1,line2〕
  1rowinset(0。00sec)
  JSONLENGTH():给出JSON文档中的元素数
  mysqlselectjsonlength(details),jsonlength(details。address)
  fromemployees。empdetails
  whereempno1;
  jsonlength(details)jsonlength(details。address)
  54
  1rowinset(0。00sec)
  原文链接:https:blog。csdn。netnangy2514articledetails98490082

征信修复骗术,你中招了吗?坐标石家庄你的征信记录上有逾期信息吗?如果有人帮你修复征信记录,你会花钱去办吗?随着征信被社会逐渐重视,市场上出现多种打着征信旗号的虚假广告和诈骗套路。近日,记者调查发现,目前市场三甲医院里面的人员怎么分级别的?我是一名外科医生,今天主要给大家讲讲医生系列的分级序列。临床分级毕业生刚入职一般都是住院医师,属于初级职称,需要在各个科室之间进行轮转学习3年,这期间可以把各个科室的基本要点掌握,劳务合同和劳动合同有什么区别?简单地说劳动合同是指劳动者和用人单位所建立的一种管理与被管理的,约定双方权利义务的一种劳动合同关系。劳务合同是指一般的劳动者与雇佣单位所建立的明确双方权利义务的合同。劳动合同是需要老人跟儿子儿媳妇住一起好不好?不好!千万不要住一起!首先有代沟,生活习惯不一样,各人的生活背景喜好不同,引起很多矛盾。亲身经历告诉大家,和年轻的公公婆婆住一起,真的是压抑憋屈,不能放开自己,没有自己的空间,干什你为什么不选择买ps4,而是去买switch?我2018年初就买了PS4PRO,在家吃灰有一年多了,年前又刚买了SWITCH,对于这个问题我的观点是这样的。1一般买PS4的玩家都是资深玩家,大多都是为了玩很多PS4独占的3A大习惯性抖腿暗示了什么性格心理?抖腿和性格没有关系,不过在很大程度上和生理和心理两个因素有关。曾经在图书馆看书时,发现坐在我右前方的一个小伙子,双脚的脚尖搭在椅子下部的横梁上,左右腿交替抖腿。一条腿抖的时长大概在2018年考研的学生一共有多少?据统计,2017年考研报考人数达到201万,较2016年177万增长13。6,其中报考非全日制硕士研究生的考生占比明显。而2018年考研报考人数已增至238万,较2017年考研增幅早餐吃什么补气血?早餐吃什么补气血?早餐吃山药粥猪肝粥大枣黑芝麻油菜黑木耳菠菜等食物补气血。气血的协调平衡是防治疾病的常用法则之一。气血不足的人很常见,常表现为气短乏力心悸头目眩晕失眠自汗等。早餐吃虾仁饺子怎么调馅好吃?谢谢邀请虾仁饺子是我家里的最爱,基本家里包饺子都要包虾仁馅的三鲜饺子!我家里包虾仁饺子,一般搭配韭菜和猪肉的时候居多,偶尔也会搭配白菜或黄瓜。虽然各有各的味,但是感觉还是韭菜虾仁的怎样在家里健身?答生活处处是锻炼!1窗台上搁腿,半墙上吊臂,折叠梯子上爬行,床上平板支撑。2在家做事踮起脚,抬头挺胸收腹,广播体操眼保健操。3盥洗室梳头三百下(早中晚各一百)4拒绝烧烤油炸火锅烟酒杀人加湿器把肺变成纤维,害死14000人,还能买吗?麻烦了解前因后果再问韩国2011年加湿器,加入了加湿器杀菌剂(含PHMG),结果死了约1。4万,65万人患病(加湿器肺炎)。加湿器一定别放柠檬片玫瑰花瓣一定别用自来水,超声波能把把
旅行是一场艳遇,最后我们遇见了自己(川藏公路篇)2018年,我的一笔投资血本无归,还欠下不少的外债,财务成本很高,那时候感情也不顺,离婚早已办完。人到中年发现事业和生活得重启了,这事很头疼。当诸事不顺时,不如安静下来,静下来才能人民始终是最重要的(大道之行)习近平主席为人真诚谦逊。在同他交谈中,我能够感受到,习近平主席对肯尼亚的了解非常深入,对我们共同关心的话题也极有见地。肯尼亚前外长拉斐尔图朱日前在接受本报记者采访时说。我将无我,不夜晚广场好热闹,村民健身舞起来2月18日晚上,郯城县马头镇南园街文化广场灯火通明,热闹非凡。许多村民自发地聚集在文化广场,伴随着音乐节奏尽情地跳起了广场舞。高军摄夜晚广场好热闹,村民健身舞起来夜晚广场好热闹,村大湖之南跟着人民日报记者,去洞庭湖观鸟人民日报客户端湖南频道王云娜(晨曦中,国家一级保护动物白鹤翩翩而落。姚毅摄)快来看!非常少见的白鹤,出现在镜头里了!眼下是观鸟的好时节,2月18日,在湖南省岳阳市君山区采桑湖观鸟点50句直接封神的人民日报金句摘抄(作文时让老师眼前一亮)1。世间因少年挺身向前,而更加瑰丽。人民日报2。山高水长,怕什么来不及,慌什么到不了,天顺其然,地顺其性,人顺其变,一切都是刚刚好。人民日报3。新长征路上,有风有雨是常态,风雨无阻福建南平武夷山市值得游玩的旅游景点有哪些?自驾游有什么攻略?武夷山武夷山市,福建省辖县级市,由南平市代管,位于福建省西北部,东连浦城,南接建阳,西临光泽,北与江西省铅山县毗邻,武夷山市总面积2813平方千米。武夷山市境内东西北部群山环抱,峰炸油条(商用配方)记得保存大家好我是宝哥做美食今天跟大家分享炸油条的制作方法觉得老弟对你有帮助的话点赞评论转发关注一油条配比你按照这个比例和面(500克)一斤面20克泡打粉。(安琪双效泡打粉)10克起酥油(好吃丨用美食甜蜜告白,倾听这些餐桌上的情话很多时候,爱意和浪漫藏在生活的细节里,在一餐饭一道菜中的情话是炙热而又含蓄的。火辣的小龙虾颜值爆表的寿司蛋糕新派京菜的传统时尚无论是在寻常日子还是特殊时刻,用美食甜蜜告白相约浪漫都衢州国资22。7亿联姻新湖中宝(文张志峰编辑马媛媛)注册地迁往衢州一年之后,新湖中宝成功与衢州国资联姻。2月21日晚间,新湖中宝公告称,为协助公司进一步争取地方政策支持,全面深化合作,推进公司转型,公司控股股东旅游市场大反弹出境游首发团多条线路已满员兔年春节热闹落幕,各地旅游数据迎来开门红,旅游市场收获三年以来最亮眼成绩单。不仅旅行订单翻了几倍,而且多家酒店入住率超过九成,几近满房。在线旅游平台携程数据显示,春节期间国内外旅行四川梓潼被授予厨师之乡,状元第文化旅游特色街区开街2月22日,作为第六届海峡两岸文昌文化交流活动暨大蜀道(梓潼)文化旅游发展大会重要专项活动之一,绵阳梓潼状元第文化旅游特色街区开街活动举行。现场,中国烹饪协会副会长乔杰宣布梓潼被授
友情链接:快好找快生活快百科快传网中准网文好找聚热点快软网