MySQL5.7中新增的JSON类型的使用方法
创建表json_test:
- CREATE TABLE json_test(id INT(11) AUTO_INCREMENT PRIMARY KEY,person_desc JSON)ENGINE INNODB;
插入一条记录:
- INSERT INTO json_test(person_desc) VALUES ('{
- "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数据有哪些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类型的使用方法的更多相关文章
- MySQL5.6中新增特性、不推荐使用的功能以及废弃的功能
虽然已经使用MySQL5.6版本有一段时间了,但由于没有和之前的版本作过详细比较,所以对于哪些重要的或者不太重要的特性是在新版本中引入的,还有哪些特性已经或者将要从旧版本中移除的并没有一个十分全面的了 ...
- js中判断一个对象的类型的种种方法
javascript中检测对象的类型的运算符有:typeof.constructor.instanceof. typeof:typeof是一个一元运算符,返回结果是一个说明运算数类型的字符串.如:&q ...
- 新增时json类型报错
新增时出错:如下 实体类中字段类型没有对应上,vue页面中修改跳转页面的路径:使用params...
- idea中新增package总是嵌套的解决方法
在idea中创建package,为了方便会将com.xx.xx作为一个package,下面添加对应的子package.比如service,config等.但是当我创建是总是会嵌套在下面变成了com.x ...
- MySQL中的JSON类型
前言(废话) 昨天抽了点时间在网上搜列了一个开源项目,项目挺完整的,前后台分离还带有微信小程序,我Clone下代码,经过一番倒腾,嘿~还真就跑起来了.在这个过程中,体验了一把VUE项目工程细节,因为之 ...
- [ASP.NET]ASP.NET中常用的26个优化性能方法
1. 数据库访问性能优化 数据库的连接和关闭 访问数据库资源需要创建连接.打开连接和关闭连接几个操作.这些过程需要多次与数据库交换信息以通过身份验证,比较耗费服务器资源.ASP.NET中提供了连接池( ...
- ASP.NET中常用的26个优化性能方法
1. 数据库访问性能优化 数据库的连接和关闭 访问数据库资源需要创建连接.打开连接和关闭连接几个操作.这些过程需要多 次与数据库交换信息以通过身份验证,比较耗费服务器资源.ASP.NET 中提供了 连 ...
- MySQL5.7中使用JSON(一)
因为项目需要,存储字段存储成了JSON格式,在项目中是将查询出来的值通过jackson转成相应的bean进行处理的,觉得不够简单方便. 偶然下,知道了MYSQL5.7原生支持SQL,今天一回来就折腾安 ...
- MySQL5.7中使用JSON
一.创建表 CREATE TABLE `user` ( `uid` int(11) NOT NULL AUTO_INCREMENT, `info` json DEFAULT NULL, #注意desc ...
随机推荐
- ios 获得设备型号方法
以前用UIScreen 的大小来判断设备类型,现在有了iphone6 和 iphone6 plus, 这种方法不能用了.因为当程序不提供相应的启动图片时,系统会把程序运行在320*568的size下, ...
- Android Broadcast 和 iOS Notification
感觉以上2个机能有许多相似之处,作个记录,待研究!
- Redis集群的部署
Redis集群分为主节点Master和从节点Slave,主节点只有1个,而从节点可以有多个,这样从节点和主节点可以进行数据的传输,Redis集群的性能将比单机环境更高,接下来是配置的过程 首先配置Ma ...
- c# 获取系统版本,获取net framework 版本(Environment 类)
1.获取当前操作系统版本信息 使用Environment.OSVersion 属性 获取包含当前平台标识符和版本号的 OperatingSystem 对象. 命名空间: System程序集: ms ...
- perl q qq qr qw qx 区别与使用方法
1.q 相当于 单引号' ' 转义字符无效 q可以使用()[] {} // ,, 2.qq 相当于" " 转义字符有效 qq可以使用()[] {} // ,, 3.qw 相当于 ...
- Effective C++ -----条款28:避免返回handles指向对象内部成分
避免返回handles(包括reference.指针.迭代器)指向对象内部.遵守这个条款可增加封装性,帮助const成员函数的行为像个const,并将发生“虚吊号码牌”(dangling handle ...
- Divide and conquer:Telephone Lines(POJ 3662)
电话线 题目大意:一堆电话线要你接,现在有N个接口,总线已经在1端,要你想办法接到N端去,电话公司发好心免费送你几段不用拉网线,剩下的费用等于剩余最长电话线的长度,要你求出最小的费用. 这一看又是一个 ...
- DP:Cow Exhibition(POJ 2184)(二维问题转01背包)
牛的展览会 题目大意:Bessie要选一些牛参加展览,这些牛有两个属性,funness和smartness,现在要你求出怎么选,可以使所有牛的smartness和funness的最大,并且这两 ...
- Gson简要使用笔记
最近在做一个java web service项目,需要用到jason,本人对java不是特别精通,于是开始搜索一些java平台的json类库. 发现了google的gson,因为之前对于protoco ...
- HDU 5821 Ball (贪心排序) -2016杭电多校联合第8场
题目:传送门. 题意:T组数据,每组给定一个n一个m,在给定两个长度为n的数组a和b,再给定m次操作,每次给定l和r,每次可以把[l,r]的数进行任意调换位置,问能否在转换后使得a数组变成b数组. 题 ...