【原创】MySQL5.7JSON类型使用介绍
JSON是一种轻量级的数据交换格式,采用了独立于语言的文本格式,类似XML,但是比XML简单,易读并且易编写。对机器来说易于解析和生成,并且会减少网络带宽的传输。 JSON的格式非常简单:名称/键值。之前MySQL版本里面要实现这样的存储,要么用VARCHAR要么用T
JSON是一种轻量级的数据交换格式,采用了独立于语言的文本格式,类似XML,但是比XML简单,易读并且易编写。对机器来说易于解析和生成,并且会减少网络带宽的传输。
JSON的格式非常简单:名称/键值。之前MySQL版本里面要实现这样的存储,要么用VARCHAR要么用TEXT大文本。 MySQL5.7发布后,专门设计了JSON数据类型以及关于这种类型的检索以及其他函数解析。 我们先看看MySQL老版本的JSON存取。
示例表结构:
CREATE TABLE json_test( id INT, person_desc TEXT )ENGINE INNODB;
我们来插入一条记录:
INSERT INTO json_test VALUES (1,'{ "programmers": [{ "firstName": "Brett", "lastName": "McLaughlin", "email": "aaaa" }, { "firstName": "Jason", "lastName": "Hunter", "email": "bbbb" }, { "firstName": "Elliotte", "lastName": "Harold", "email": "cccc" }], "authors": [{ "firstName": "Isaac", "lastName": "Asimov", "genre": "sciencefiction" }, { "firstName": "Tad", "lastName": "Williams", "genre": "fantasy" }, { "firstName": "Frank", "lastName": "Peretti", "genre": "christianfiction" }], "musicians": [{ "firstName": "Eric", "lastName": "Clapton", "instrument": "guitar" }, { "firstName": "Sergei", "lastName": "Rachmaninoff", "instrument": "piano" }] }');
那一般我们遇到这样来存储JSON格式的话,只能把这条记录取出来交个应用程序,有应用程序来解析。
现在到了MySQL5.7,我们重新修改下表结构:
ALTER TABLE json_test MODIFY person_desc json;
先看看插入的这行JSON数据有哪些KEY:
mysql> SELECT id,json_keys(person_desc) as "keys" FROM json_test\G *************************** 1. row *************************** id: 1 keys: ["authors", "musicians", "programmers"] 1 row in set (0.00 sec)
我们可以看到,里面有三个KEY,分别为authors,musicians,programmers。那现在找一个KEY把对应的值拿出来:
mysql> SELECT json_extract(AUTHORS,'$.lastName[0]') AS 'name', AUTHORS FROM -> ( -> SELECT id,json_extract(person_desc,'$.authors[0][0]') AS "authors" FROM json_test -> UNION ALL -> SELECT id,json_extract(person_desc,'$.authors[1][0]') AS "authors" FROM json_test -> UNION ALL -> SELECT id,json_extract(person_desc,'$.authors[2][0]') AS "authors" FROM json_test -> ) AS T1 -> ORDER BY NAME DESC\G *************************** 1. row *************************** name: "Williams" AUTHORS: {"genre": "fantasy", "lastName": "Williams", "firstName": "Tad"} *************************** 2. row *************************** name: "Peretti" AUTHORS: {"genre": "christianfiction", "lastName": "Peretti", "firstName": "Frank"} *************************** 3. row *************************** name: "Asimov" AUTHORS: {"genre": "sciencefiction", "lastName": "Asimov", "firstName": "Isaac"} 3 rows in set (0.00 sec)
现在来把详细的值罗列出来:
mysql> SELECT -> json_extract(AUTHORS,'$.firstName[0]') AS "firstname", -> json_extract(AUTHORS,'$.lastName[0]') AS "lastname", -> json_extract(AUTHORS,'$.genre[0]') AS "genre" -> FROM -> ( -> SELECT id,json_extract(person_desc,'$.authors[0]') AS "authors" FROM json _test -> ) AS T\G *************************** 1. row *************************** firstname: "Isaac" lastname: "Asimov" genre: "sciencefiction" 1 row in set (0.00 sec)
我们进一步来演示把authors 这个KEY对应的所有对象删掉。
mysql> UPDATE json_test -> SET person_desc = json_remove(person_desc,'$.authors')\G Query OK, 1 row affected (0.01 sec) Rows matched: 1 Changed: 1 Warnings: 0
查找下对应的KEY,发现已经被删除掉了。
mysql> SELECT json_contains_path(person_desc,'all','$.authors') as authors_exist s FROM json_test\G *************************** 1. row *************************** authors_exists: 0 1 row in set (0.00 sec)
总结下, 虽然MySQL5.7 开始支持JSON数据类型,但是我建议如果要使用的话,最好是把这样的值取出来,然后在应用程序段来计算,毕竟数据库是用来处理简单数据的。

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

热门话题

网易邮箱,作为中国网民广泛使用的一种电子邮箱,一直以来以其稳定、高效的服务赢得了用户的信赖。而网易邮箱大师,则是专为手机用户打造的邮箱软件,它极大地简化了邮件的收发流程,让我们的邮件处理变得更加便捷。那么网易邮箱大师该如何使用,具体又有哪些功能呢,下文中本站小编将为大家带来详细的内容介绍,希望能帮助到大家!首先,您可以在手机应用商店搜索并下载网易邮箱大师应用。在应用宝或百度手机助手中搜索“网易邮箱大师”,然后按照提示进行安装即可。下载安装完成后,我们打开网易邮箱账号并进行登录,登录界面如下图所示

在如今云存储已经成为我们日常生活和工作中不可或缺的一部分。百度网盘作为国内领先的云存储服务之一,凭借其强大的存储功能、高效的传输速度以及便捷的操作体验,赢得了广大用户的青睐。而且无论你是想要备份重要文件、分享资料,还是在线观看视频、听取音乐,百度网盘都能满足你的需求。但是很多用户们可能对百度网盘app的具体使用方法还不了解,那么这篇教程就将为大家详细介绍百度网盘app如何使用,还有疑惑的用户们就快来跟着本文详细了解一下吧!百度云网盘怎么用:一、安装首先,下载并安装百度云软件时,请选择自定义安装选

MetaMask(中文也叫小狐狸钱包)是一款免费的、广受好评的加密钱包软件。目前,BTCC已支持绑定MetaMask钱包,绑定后可使用MetaMask钱包进行快速登入,储值、买币等,且首次绑定还可获得20USDT体验金。在BTCCMetaMask钱包教学中,我们将详细介绍如何注册和使用MetaMask,以及如何在BTCC绑定并使用小狐狸钱包。MetaMask钱包是什么?MetaMask小狐狸钱包拥有超过3,000万用户,是当今最受欢迎的加密货币钱包之一。它可免费使用,可作为扩充功能安装在网络

小米汽车软件提供远程车控功能,让用户可以通过手机或电脑远程控制车辆,例如开关车辆的门窗、启动引擎、控制车辆的空调和音响等,下文就是这个软件的使用及内容,一起了解下吧。小米汽车app功能及使用方法大全1、小米汽车app在3月25日上线苹果AppStore,现在安卓手机的应用商店中也可以下载了;购车:了解小米汽车核心亮点和技术参数,可预约试驾、配置订购您的小米汽车,支持在线处理提车待办事项。3、社区:了解小米汽车品牌资讯,交流用车体验,分享精彩车生活;4、车控:手机就是遥控器,远程控制,实时安防,轻

PHP数组转JSON的性能优化方法包括:使用JSON扩展和json_encode()函数;添加JSON_UNESCAPED_UNICODE选项以避免字符转义;使用缓冲区提高循环编码性能;缓存JSON编码结果;考虑使用第三方JSON编码库。

Jackson库中的注解可控制JSON序列化和反序列化:序列化:@JsonIgnore:忽略属性@JsonProperty:指定名称@JsonGetter:使用获取方法@JsonSetter:使用设置方法反序列化:@JsonIgnoreProperties:忽略属性@JsonProperty:指定名称@JsonCreator:使用构造函数@JsonDeserialize:自定义逻辑

得物分期购怎么使用?在得物APP中购买喜爱的商品是可以使用分期付款的服务,多数的不知道得物分期购如何的使用,接下来就是小编为用户带来的得物分期购使用方法图文教程,感兴趣的用户快来一起看看吧!得物使用教程得物分期购怎么使用1、首先打开得物APP进入到主页面,选择自己喜爱的商品进入到购买页面;2、之后在下图商品购买页面,点击右下角【立即购买】;3、然后选择合适的码数,点击左侧的价格;4、接着在确认订单的页面,选择右下角【提交订单】;5、最后在付款的页面,勾选【花呗分期】后方的按钮,选择分期类型即可完

随着短视频平台的盛行,视频矩阵账号营销已成为一种新兴营销方式。通过在不同平台上创建和管理多个账号,企业和个人能够实现品牌推广、粉丝增长和产品销售等目标。本文将为您探讨如何有效运用视频矩阵账号,并介绍不同类型的视频矩阵账号。一、视频矩阵账号怎么做?要想做好视频矩阵账号,需要遵循以下几个步骤:首先要明确你的视频矩阵账号的目标是什么,是为了品牌传播、粉丝增长还是产品销售。明确目标有助于制定相应的策略。2.选择平台:根据你的目标受众,选择合适的短视频平台。目前主流的短视频平台有抖音、快手、火山小视频等。
