本篇文章给大家分享的是有关MySQL 8.0是不是可以操作JSON,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。
<强>前言:强>
经过漫长的测试,即将整体迁移至<代码> Mysql8.0> 代码;<代码> Mysql8.0> 代码对于Json代码> <代码>操作新增/优化了很多相关<代码> Json> 代码的API操作;阅读了一下官方文档,虽然绝大多数的JSON操作都是应用层完成,但是会一些Mysql <代码> 代码>的<代码> JSON代码>语法,方便进行<代码>调试> 代码;选出基础的,有价值的部分,供未来参考;https://dev.mysql.com/doc/ref..
。
https://dev.mysql.com/doc/ref..。
1,简单概述
不允许为<代码>零> 代码;<代码> Json 代码>格式定义与<代码> LONGBLOB或量变> 代码类似;它的最大长度是受到<代码> max_allowed_packet> 代码所控制的;
查看Json字段所占用空间大小的函数时JS <代码> ON_STORAGE_SIZE (xxx) 代码>,
除普通的Json代码> <代码>操作,额外支持<代码> GeoJSON> 代码(基于几何图形的针对地理空间数据交换格式)一些相关操作,
对Json栏位支持索引(结合<代码> Mysql8.0 代码>新特性,函数<代码>指数> 代码),
一个可以支持部分的,原地更新<代码> Json列> 代码的可选优化项加入<代码> Mysql8.0> 代码;,,可以使用的函数有<代码> JSON_SET() 代码>,<代码> JSON_REPLACE() 代码>,<代码> JSON_REMOVE()> 代码;使用时,有一些约束,但是会有更加的性能,
2, JSON基础工具
//使用JSON_ARRAY方法定义JSON数组; SELECT JSON_ARRAY (1,“abc",,空,,真的,,CURTIME ())//结果:[1,“abc",,空,,真的,,“11:30:24.000000"),,//JSON_OBJECT 方法定义JSON对象 SELECT JSON_OBJECT (& # 39; id # 39;,, 87,, & # 39;名字# 39;,,& # 39;胡萝卜# 39;)//结果{“id": 87年,,,“name":,“carrot"}//数组,与,对象嵌套的场景; (99年,{“id":“HK500",,“cost":, 75.99},, (“hot",,“cold"]], {“k1":“value",,“k2":, (10, 20)}//日期/时间类型定义 (“12:18:29.000000",,“2015 - 07 - 29“,,, 2015 - 07 - 29, 12:18:29.000000"】 ,//JSON_QUOTE 将JSON对象转义成字符串,就是将内部的符,,号进行转义,并整体包裹上双引号; JSON_QUOTE (& # 39;,“null", & # 39;)//结果,“\“零\““//将JSON内容美化并输出; JSON_PRETTY ()//可以将JSON/JSON内部的元素转化为其他数据类型;//如下将JSON jdoc 中的id元素,转化为,unsigned 智力; (https://dev.mysql.com/doc/refman/8.0/en/json.html json-converting-between-types),,,, (https://dev.mysql.com/doc/refman/8.0/en/json.html # json-converting-between-types) ORDER BY 铸(JSON_EXTRACT (jdoc, & # 39; .id& # 39;美元),AS ,,无符号),
合并<代码> JSON> 代码的操作<代码> JSON_MERGE_PRESERVE()和JSON_MERGE_PATCH() 代码>实际业务用的可能性很少;
→——在操作符,按照关键找值;区别在于,在会去除包裹的“以及转义符号;它的等价的<代码> 代码>形函数式是<代码> JSON_EXTRACT() 代码>
//, {“mascot":“Our mascot is a dolphin named \“Sakila \“!”} mysql>, SELECT 坳→“.mascot"美元;,得到qt;//结果:|,“Our mascot is a dolphin named \“Sakila \“!”| 和“SELECT 句子→;.mascot"美元;,得到事实;//,结果:|,Our mascot is a dolphin named “Sakila"只|
3
JSON路径表达式上面——比;后双引号中的内容就是所谓的JSON路径表达式<代码> 代码>,
该语法是<代码> ECMAScript代码>规范的一部分,所以前端程序员应该特别熟悉;
<强>以下面这段JSON为例:强>
, [3,, {“a": [5, 6],“b":, 10},, (99,, 100)) ,$ [0]=,3,; ,[1]美元=,{“a": [5, 6],“b":, 10}; ,$ [2]=,(99,,100);
<强>与此同时,美元[1],[2]美元并非标量,进一步强>
[1]美元.a =, (5、6) 美元[1]。[1],=6 时间=美元[1].b 10; 美元[2][0],=,99;
<强>更进一步支持的语法特性美元[n m] 强>
,美元[1大敌;用2],=,[{“a": [5, 6],“b":, 10},, (99,, 100)) ,美元[last-2 用持续1],=,[3,,{“a": [5, 6],“b":, 10}]
<强>总结一下,强>
- <李>
。*是代表所有的<代码>成员对象> 代码;
李> <李>b[*]是代表所有的<代码>细胞阵列>