Mysql5.7使用JSON数据标准示范.doc





《Mysql5.7使用JSON数据标准示范.doc》由会员分享,可在线阅读,更多相关《Mysql5.7使用JSON数据标准示范.doc(16页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、.目录一、创建表4二、插入数据4三、查询所有数据51. 按找user_info中的数据精确查询,数据格式需要与json数据中的存储方式完全一致52. - 等价于JSON_EXTRACT53. JSON_SEARCH(字段名,one or all,条件),没找到one 和 all 的具体区别54.JSON_CONTAINS判断key是否包含指定的值,JSON_CONTAINS(字段名,条件,key);0为不包含,1为包含;55. JSON_LENGTH(字段名),查询字段的json节点数66.json_unquote(),去掉字符串首尾的特殊字符,包括:,b,f,n,r,t,uXXXX6四、其他
2、操作71.JSON_ARRAY_APPEND()数组类的追加71.1JSON_ARRAY_APPEND数组类的追加, 不是标准数组类型的, 在追加后会自动转为数组格式,并把之前的值作为第一个元素;71.2在字段中第二个数值的数组中追加一个元素171.3在字段中第三个数值的数组中追加一个元素1,如果不是数组形式的单个值会改变其为数组并追加:71.4在字段中第三个数值的数组中追加一个数组,如果不是数组形式的单个值会改变其为数组并追加:71.5在字段中第一个数值的数组中追加一个元素3,如果不是数组形式的单个值会改变其为数组并追加:81.6在字段中第二个数值的第一个数组中追加一个元素2,如果不是数组形
3、式的单个值会改变其为数组并追加:81.7在字段中key为”b”的value数组中追加一个元素”x”:81.8在字段中key为”c”的value数组中追加一个元素”y”:81.9如果JSON字段为标准的JSON类型,使用这个函数则会把其变化数组形式,并追加值:81.10在字段中追加一个元素181.11在字段中批量追加元素:2,391.12在字段的key为key1的节点中追加一个元素:1,如果不是数组形式的单个值会改变其为数组并追加:91.13如果JSON字段为标准的JSON类型并且其中某节点是数组格式,并追加值:91.14在字段的key为key2中追加一个元素:191.15在字段中key2的第一
4、个数组中追加一个元素2,如果不是数组形式的单个值会改变其为数组并追加:92.JSON_ARRAY_INSERT()数组类的插入92.1在数组第1个值前面插入字符y 元素:102.2在数组第100个值的后面插入字符z元素;如果超出数组长度,则在最后一个值后面插入;102.3在数组第1个值中key为b的value数组第1个值前面入字符元素x:102.4在数组第1个值中key为b的value数组第1个值后面入字符元素x:102.5在数组第3个值后面数组第1个值后面入字符元素y:102.6数组元素的批量插入:在数组第一个值后面添加元素x,在数组第3个值后面数组的第一个值后面添加元素y,在数组第3个值后
5、面数组的第一个值后面添加元素z,在数组第5个值后面添加元素HH112.7 JSON_INSERT标准JSON值的插入112.7.1如果这个key已经存在,则不会去覆盖旧值,不存在的插入113 JSON_MERGE合并操作113.1 JSON_MERGE这个主要用于合并:如果两个是数组的,则合并为一个数组;如果两个是JSON的,则合并为一个JSON,如果两个JSON有相同的key,则value合并为数组;如果是两个单值的,则合并为一个数组;如果是一个数组,一个是JSON,则合并为一个数组:113.2当r,s都是数组时,将r 和 s 两个数组合并后,组成的新数组包含两个数组中所有信息,重复数据不合
6、并。123.3当r,s都是JSON时,将r 和 s 两个JSON合并后,组成的新JSON包含两个JSON中所有信息,如何key值相同,则合并为一个数组;124JSON_REMOVE删除操作124.1 JSON_REMOVE删除操作,这个比较简单,删除字段中某个值,数组的或是JSON格式的都可以:先设置一个变量z,现在为数组格式:124.1删除数组z的第二个元素:124.2再设置变量z为JSON格式:134.3删除JSON:z的key1:134.4删除JSON中key4数组的第一个元素:134.5再设置变量z为数组格式:134.6删除数组中第四个JSON元素里的key1:135JSON_REPL
7、ACE操作135.1 JSON_REPLACE替换操作,有则替换,无则忽略。135.2设置变量 aa为JSON格式:135.3替换aa中的key1为aaaaa,替换aa中的key2的第二个元素为33,替换aa中的key3为1,2,3,4,ccc,在aa中没有key4,所以不会添加:146JSON_SET操作146.1 JSON_SET操作为更新和插入操作,已经存在的去更新;不存在则插入146.2设置变量bb为JSON格式:146.3替换bb的key1、key2、key4,增加key5147JSON字段索引以及Generated字段147.1 Generated Column介绍157.2 Ge
8、nerated Column注意事项167.3 利用Generated Column给JSON字段添加索引16一、创建表CREATE TABLE json_test ( id INT(11) NOT NULL AUTO_INCREMENT, user_name VARCHAR(20) DEFAULT NULL, user_info json DEFAULT NULL, PRIMARY KEY (id) ENGINE=INNODB DEFAULT CHARSET=utf8;二、插入数据INSERT INTO json_test(user_name,user_info)VALUES(用户1,age
9、:23,sex:男,name:李一,nat:汉族),(用户2,age:24,sex:男,name:李二,nat:汉族),(用户3,age:25,sex:男,name:李三,nat:汉族),(用户4,age:26,sex:男,name:李四,nat:汉族),(用户5,age:27,sex:男,name:李五,nat:汉族),(用户6,age:28,sex:男,name:李六,nat:汉族),(用户7,age:29,sex:男,name:李七,nat:汉族),(用户8,age:30,sex:男,name:李八,nat:汉族);三、查询所有数据SELECT * FROM json_test;1. 按
10、找user_info中的数据精确查询,数据格式需要与json数据中的存储方式完全一致SELECT * FROM json_test WHERE json_extract(user_info,$.age) = 23;SELECT * FROM json_test WHERE json_extract(user_info,$.name) = 李一;SELECT * FROM json_test WHERE json_extract(user_info,$.name) LIKE %李%; - 模糊查询2. - 等价于JSON_EXTRACTSELECT * FROM json_test WHERE
11、user_info - $.age = 23;SELECT * FROM json_test WHERE user_info - $.name = 李一;SELECT * FROM json_test WHERE user_info - $.name LIKE %李%; - 模糊查询3. JSON_SEARCH(字段名,one or all,条件),没找到one 和 all 的具体区别SELECT * FROM json_test WHERE JSON_SEARCH(user_info,one,李一) IS NOT NULL;SELECT * FROM json_test WHERE JSON
12、_SEARCH(user_info,all,李一) IS NOT NULL;SELECT * FROM json_test WHERE JSON_SEARCH(user_info,all,%二) IS NOT NULL;SELECT * FROM json_test WHERE JSON_SEARCH(user_info,all,%李%) IS NOT NULL;4.JSON_CONTAINS判断key是否包含指定的值,JSON_CONTAINS(字段名,条件,key);0为不包含,1为包含;SELECT id,user_name,user_info,JSON_CONTAINS(user_in
13、fo,李二,$.name) AS path1 FROM json_test - where JSON_CONTAINS(user_info,李二,$.name);5. JSON_LENGTH(字段名),查询字段的json节点数SELECT id,user_name,JSON_LENGTH(user_info) AS length FROM json_test;6.json_unquote(),去掉字符串首尾的特殊字符,包括:,b,f,n,r,t,uXXXXSELECT *,json_unquote(json_extract(user_info,$.name) AS unquote FROM j
14、son_test;四、其他操作1.JSON_ARRAY_APPEND()数组类的追加1.1JSON_ARRAY_APPEND数组类的追加, 不是标准数组类型的, 在追加后会自动转为数组格式,并把之前的值作为第一个元素; SET j = a, b, c, d; SET k = a,b,c,d,e; 1.2在字段中第二个数值的数组中追加一个元素1SELECT JSON_ARRAY_APPEND(j, $1, 1); - 执行结果:a, b, c, 1, d1.3在字段中第三个数值的数组中追加一个元素1,如果不是数组形式的单个值会改变其为数组并追加:SELECT JSON_ARRAY_APPEND(
15、j, $2, 1); - 执行结果:a, b, c, d, 1SELECT JSON_ARRAY_APPEND(k, $2, 1); - 执行结果:a, b, c, d, e, 11.4在字段中第三个数值的数组中追加一个数组,如果不是数组形式的单个值会改变其为数组并追加:SELECT JSON_UNQUOTE(JSON_ARRAY_APPEND(j,$2,k); - 执行结果:a, b, c, d, a,b,c,d,e1.5在字段中第一个数值的数组中追加一个元素3,如果不是数组形式的单个值会改变其为数组并追加:SELECT JSON_ARRAY_APPEND(j,$0,3); - 执行结果:a
16、, 3, b, c, d1.6在字段中第二个数值的第一个数组中追加一个元素2,如果不是数组形式的单个值会改变其为数组并追加:SELECT JSON_ARRAY_APPEND(j,$10,2); - 执行结果:a, b, 2, c, d1.7在字段中key为”b”的value数组中追加一个元素”x”: SET l = a: 1, b: 2, 3, c: 4;SELECT JSON_ARRAY_APPEND(l,$.b,x); - 执行结果:a: 1, b: 2, 3, x, c: 41.8在字段中key为”c”的value数组中追加一个元素”y”:SELECTJSON_ARRAY_APPEND(
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- mysql5 使用 json 数据 标准 示范

限制150内