当前位置: 首页 > news >正文

网站建设 广告推广网站优化seo培训

网站建设 广告推广,网站优化seo培训,网站不备案的后果,网站建设培训 pptMySQL 从 v5.7.8 开始支持 JSON 数据类型。 JSON 数据类型和传统数据类型的操作还是有很大的差别,需要单独学习掌握。好在 JSON 数据类型的学习成本不算太高,只是在 SQL 语句中扩展了 JSON 函数,操作 JSON 数据类型主要是对函数的学习。 新…

MySQLv5.7.8 开始支持 JSON 数据类型。

JSON 数据类型和传统数据类型的操作还是有很大的差别,需要单独学习掌握。好在 JSON 数据类型的学习成本不算太高,只是在 SQL 语句中扩展了 JSON 函数,操作 JSON 数据类型主要是对函数的学习。

新建数据库

CREATE TABLE t(id INT, data json, PRIMARY KEY (id));

插入数据

新增 JSON 文档

函数描述
JSON_ARRAY创建 JSON 数组
JSON_OBJECT创建 JSON 对象

插入数据可以通过字符串的方式直接插入或者用 JSON_ARRAYJSON_OBJECT 函数来构造数据。

插入数组

INSERT INTO t (id, data) VALUES (1, '[1, 2, 3]');
INSERT INTO t (id, data) VALUES (2, JSON_ARRAY(1, 2, 3));

插入对象

INSERT INTO t (id, data) VALUES (3, '{"a": 1, "b": 2}');
INSERT INTO t (id, data) VALUES (4, JSON_OBJECT("a", 1, "b", 2, "c", 3));
INSERT INTO t (id, data) VALUES (5, '{"a": "abc", "b": {"c": "dad"}, "c": {"b": "aaa"}}');

修改数据

修改 JSON 文档

函数描述
JSON_SET当 Key 存在时修改,当 Key 不存在时新增
JSON_INSERT当 Key 不存在时新增,当 Key 存在时不做任何变动
JSON_REPLACE当 Key 存在时更新,当 Key 不存在时不做任何变动
JSON_ARRAY_INSERT在数组末尾处追加新元素
JSON_ARRAY_APPEND在数组指定下标处插入新元素
JSON_MERGE_PATCH合并 JSON 数组或对象
JSON_MERGE_PRESERVE合并 JSON 数组或对象

JSON_SET$ 表示整个 JSON 文档,通过指定对象属性或数组下标的方式修改数据,当 key 存在时修改反之则新增。

UPDATE t SET data = '[1, 20, 30]' WHERE id = 1;
UPDATE t SET data = JSON_SET(data, '$.c', 30, '$.d', 40) WHERE id = 4;
UPDATE t SET data = JSON_INSERT(data, '$.c', 3) WHERE id = 4;
UPDATE t SET data = JSON_REPLACE(data, '$.c', 3) WHERE id = 4;
UPDATE t SET data = JSON_ARRAY_INSERT(data, '$[0]', 0) WHERE id = 1;
UPDATE t SET data = JSON_ARRAY_APPEND(data, '$', 4) WHERE id = 1;

JSON_MERGE_PATCHJSON_MERGE_PRESERVE 都对 JSON 数组或对象进行合并操作,二者用法相同只是合并逻辑有所不同,具体的详情和细节可在文末参考链接中寻找。

删除数据

删除 JSON 文档

函数描述
JSON_REMOVE当 Key 存在时删除,当 Key 不存在时不做任何变动
UPDATE t SET data = JSON_REMOVE(data, '$.c', '$.d') WHERE id = 4;

查询数据

查询 JSON 文档

函数描述
JSON_CONTAINS判断源数据是否包含某个 JSON 数组或对象,包含返回 1, 否则返回 0
JSON_CONTAINS_PATH判断源数据某个路径下是否包含某个 JSON 数组或对象,包含返回 1, 否则返回 0
JSON_SEARCH指定关键字搜索 JSON 数组或对象,可以限制查找范围条件,支持 %、_、*、** 通配符,结果返回为 JSON 值的路径
SELECT JSON_CONTAINS(data, '{"b": 2}') FROM t WHERE id = 3;  // 1
SELECT JSON_CONTAINS(data, '{"c": 3}') FROM t WHERE id = 3;  // 0

第二个参数是控制返回数据的条数,参数如果是 one 只返回一条,参数如果是 all 则返回全部。

SELECT JSON_CONTAINS_PATH(data, 'one', '$.b', '$.c') FROM t WHERE id = 3;  // 1
SELECT JSON_CONTAINS_PATH(data, 'all', '$.b', '$.c') FROM t WHERE id = 3;  // 0

LIKE 一样,在字符串关键字的通过用 %_ 在所有节点的值中匹配。

SELECT JSON_SEARCH(data, 'one', '%a%') FROM t WHERE id = 5;  // $.a
SELECT JSON_SEARCH(data, 'all', '%a%') FROM t WHERE id = 5;  // ["$.a", "$.b.c", "$.c.b"]

还可以对条件限制查找范围。

SELECT JSON_SEARCH(data, 'all', '%a%', NULL, '$.b') FROM t WHERE id = 5;  // "$.b.c"

查找范围还可使用通配符,** 是递归匹配所有节点下的值。

SELECT JSON_SEARCH(data, 'all', '%a%', NULL, '$**.b') FROM t WHERE id = 5;  // ["$.b.c", "$.c.b"]

在实际开发中,一般 JSON_SEARCH 用的是最多的,而且大部分情况是作为搜索条件出现的,例如:

SELECT * FROM `templates_data` WHERE `template_id`=4 AND data -> '$**.value' LIKE '%内蒙古%'
SELECT * FROM `templates_data` WHERE `template_id`=4 AND JSON_SEARCH(data, 'all', '%内蒙古%', null, '$**.value')
SELECT * FROM `templates_data` WHERE `template_id`=4 AND JSON_CONTAINS(data, JSON_OBJECT('value', '内蒙古'))

**注意:**只有 JSON_EXTRACTJSON_SEARCH 中的 path 才支持通配符。

操作文档

操作 JSON 文档

函数描述
JSON_QUOTE将 String 类型转成 JSON 类型
JSON_UNQUOTE将 JSON 类型转成 String 类型
JSON_KEYS以数组的方式返回 JSON 文档中的 Key
JSON_EXTRACT以字符串或数组的方式返回 JSON 文档中的 Value,支持通配符
JSON_LENGTH返回 JSON 文档的长度
JSON_DEPTH返回 JSON 文档的最大深度
JSON_TYPE返回 JSON 文档值的类型
JSON_VALID判断 JSON 文档是否合法
SELECT JSON_QUOTE('{"a": 1, "b": 2, "c": 3}');          // "{\"a\": 1, \"b\": 2, \"c\": 3}"
SELECT JSON_UNQUOTE('{"a": 1, "b": 2, "c": 3}');        // {"a": 1, "b": 2, "c": 3}
SELECT JSON_KEYS('{"a": 1, "b": 2, "c": 3}');           // ["a", "b", "c"]
SELECT JSON_EXTRACT('{"a": 1, "b": 2, "c": 3}', '$.b'); // 2
SELECT JSON_LENGTH('{"a": 1, "b": 2, "c": 3}', '$.b');  // 1
SELECT JSON_DEPTH('{"a": 1, "b": 2, "c": 3}');          // 2
SELECT JSON_TYPE('{"a": 1, "b": 2, "c": 3}');           // OBJECT
SELECT JSON_VALID('{"a": 1, "b": 2, "c": 3}');          // 1

参考链接:
https://www.sjkjc.com/mysql-ref/json_array/
https://www.cnblogs.com/xyj179/p/11451593.html

http://www.mmbaike.com/news/102357.html

相关文章:

  • 网站建设难度大吗卡点视频免费制作软件
  • 创建网站时间代码给我免费的视频在线观看
  • 北京建设专职查询网站免费平台推广
  • 南昌做网站排名crm系统网站
  • 织梦网站源码好吗郑州seo排名公司
  • 关镇铨装修到底怎样百度快照怎么优化排名
  • 网站建设培训合肥今天晚上19点新闻联播直播回放
  • 网页设计基础知识点考试搜索引擎优化seo什么意思
  • 重庆的网站设计公司价格网络推广的工作内容是什么
  • c 网站做微信收款功能淘宝直通车推广怎么收费
  • 做h5的网站哪个好建网站用什么软件
  • 做正品的汽配网站seo核心技术排名
  • 浅谈中兴电子商务网站建设模板之家官网
  • 承德网站网站建设网站排名英文
  • 做外贸需要什么网站作品推广
  • 做推广要知道的网站星链友店
  • 怎样用java 做网站站长素材音效网
  • 外贸选品网站创建属于自己的网站
  • 官网免费在线客服系统aso安卓优化公司
  • 海口绿色创意网络科技有限公司线上seo关键词优化软件工具
  • 林壑地板北京网站建设站长工具ip地址查询
  • 网站开发国内外研究背景想学管理方面的培训班
  • asp黑网站源码全国最新疫情最新消息
  • 常州网站制作套餐培训网站制作
  • 可以下载app的软件西安seo站内优化
  • 网站文章内容一键排版功能首页关键词优化公司
  • 传奇怎么做充值网站网络营销主要做什么
  • 阿里巴巴国际站骗局河南省人民政府
  • 德宏企业网站建设公司6百度免费推广平台
  • 中国今日新增新冠肺炎厦门seo关键词