文档章节

json表操作 & 索引

dfkjih
 dfkjih
发布于 2016/02/16 15:30
字数 368
阅读 32
收藏 0
MySQL [test]> create table t2(a json,b INT);
MySQL [test]> show create table t2;
| t2    | CREATE TABLE `t2` (
  `a` json DEFAULT NULL,
  `b` int(11) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8 |

MySQL [test]> insert into t2 values("[2,32,41]",33),("[3,13,2,[22,44,55]]",0);

MySQL [test]> select * from t2;
+--------------------------+------+
| a                        | b    |
+--------------------------+------+
| [2, 32, 41]              |   33 |
| [3, 13, 2, [22, 44, 55]] |    0 |
+--------------------------+------+

MySQL [test]> select a->"$[0]" from t2;
+-----------+
| a->"$[0]" |
+-----------+
| 2         |
| 3         |
+-----------+
2 rows in set (0.00 sec)

MySQL [test]> select json_extract(`a`,"$[0]") from t2;
+--------------------------+
| json_extract(`a`,"$[0]") |
+--------------------------+
| 2                        |
| 3                        |
+--------------------------+

MySQL [test]> select a->"$[3]" from t2; 
+--------------+
| a->"$[3]"    |
+--------------+
| NULL         |
| [22, 44, 55] |
+--------------+

MySQL [test]> select `a` from t2 where json_extract(`a`,"$[0]")>2;
+--------------------------+
| a                        |
+--------------------------+
| [3, 13, 2, [22, 44, 55]] |
+--------------------------+

MySQL [test]> insert into t2 values('"aa"',10);

MySQL [test]> select * from t2;
+--------------------------+------+
| a                        | b    |
+--------------------------+------+
| [2, 32, 41]              |   33 |
| [3, 13, 2, [22, 44, 55]] |    0 |
| "aa"                     |   10 |
+--------------------------+------+

MySQL [test]> delete from t2 where `a`->"$[0]" = "aa";
Query OK, 1 row affected (0.00 sec)

MySQL [test]> select * from t2;
+--------------------------+------+
| a                        | b    |
+--------------------------+------+
| [2, 32, 41]              |   33 |
| [3, 13, 2, [22, 44, 55]] |    0 |
+--------------------------+------+


1


  • 使用索引

As noted elsewhere, JSON columns cannot be indexed directly. To create an index that references such a column indirectly, you can define a generated column that extracts the information that should be indexed, then create an index on the generated column, as shown in this example:

MySQL [test]> create table t3(c json, g int generated always as (json_extract(c,"$.id")),index i (g));
Query OK, 0 rows affected (0.01 sec)

insert into t3 (c) values ('{"id": "1", "name": "Fred"}'), ('{"id": "2", "name": "Wilma"}'),('{"id": "3", "name": "Barney"}'), ('{"id": "4", "name": "Betty"}');
Query OK, 4 rows affected (0.01 sec)
Records: 4  Duplicates: 0  Warnings: 0

MySQL [test]> select * from t3;
+-------------------------------+------+
| c                             | g    |
+-------------------------------+------+
| {"id": "1", "name": "Fred"}   |    1 |
| {"id": "2", "name": "Wilma"}  |    2 |
| {"id": "3", "name": "Barney"} |    3 |
| {"id": "4", "name": "Betty"}  |    4 |
+-------------------------------+------+

MySQL [test]> select `c`->"$.id" from t3 where `g` > 2;
+-------------+
| `c`->"$.id" |
+-------------+
| "3"         |
| "4"         |
+-------------+
2 rows in set (0.00 sec)

MySQL [test]> select `c`->"$.name" from t3 where `g` > 2;  
+---------------+
| `c`->"$.name" |
+---------------+
| "Barney"      |
| "Betty"       |
+---------------+
2 rows in set (0.00 sec)



© 著作权归作者所有

上一篇: mysql5.7 安装
下一篇: json方法基础
dfkjih
粉丝 0
博文 23
码字总数 13951
作品 0
浦东
私信 提问
PostgreSQL是不是你的下一个JSON数据库?

根据Betteridge定律(任何头条的设问句可以用一个词来回答:不是),除非你的JSON数据很少修改,并且查询很多。 最新版的PostgreSQL添加更多对JSON的支持,我们曾经问过PostgreSQL是否可以替...

swingcoder
2015/08/09
0
0
Postgres 9.4 重要特性:jsonb 数据类型

PostgreSQL 9.4 正在加载一项新功能叫jsonb,是一种新型资料,可以储存支援GIN索引的JSON 资料。换言之,此功能,在即将来临的更新中最重要的是,如果连这都不重要的话,那就把Postgres 置于...

oschina
2014/11/17
5.5K
10
MySQL · 最佳实践 · 如何索引JSON字段

概述 MySQL从5.7.8起开始支持JSON字段,这极大的丰富了MySQL的数据类型。也方便了广大开发人员。但MySQL并没有提供对JSON对象中的字段进行索引的功能,至少没有直接对其字段进行索引的方法。...

阿里云云栖社区
2017/12/22
0
0
PostgreSQL 12 beta 1 发布,新特性预览

PostgreSQL 12 beta 1 发布了,此版本包含了 PostgreSQL 12 最终版本中可用的所有功能的预览,但某些细节可能会在 12 正式发布之前发生变化。 新特性包括: 索引性能、功能和管理 PostgreSQL...

h4cd
昨天
0
0
mysql的json特性的应用

概述 说实话,个人不是很喜欢这种特性,关系型数据库就应该有关系型数据库的样子,而不是为了留住用户而强加给他一些nosql的特性,而且还没有人家做的好,这样反而会造成一种四不像的感觉。s...

whaon
2018/08/10
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Angular 英雄编辑器

应用程序现在有了基本的标题。 接下来你要创建一个新的组件来显示英雄信息并且把这个组件放到应用程序的外壳里去。 创建英雄组件 使用 Angular CLI 创建一个名为 heroes 的新组件。 ng gener...

honeymoose
今天
4
0
Kernel DMA

为什么会有DMA(直接内存访问)?我们知道通常情况下,内存数据跟外设之间的通信是通过cpu来传递的。cpu运行io指令将数据从内存拷贝到外设的io端口,或者从外设的io端口拷贝到内存。由于外设...

yepanl
今天
6
0
hive

一、hive的定义: Hive是一个SQL解析引擎,将SQL语句转译成MR Job,然后再在Hadoop平台上运行,达到快速开发的目的 Hive中的表是纯逻辑表,就只是表的定义,即表的元数据。本质就是Hadoop的目...

霉男纸
今天
3
0
二、Spring Cloud—Eureka(Greenwich.SR1)

注:本系列文章所用工具及版本如下:开发工具(IDEA 2018.3.5),Spring Boot(2.1.3.RELEASE),Spring Cloud(Greenwich.SR1),Maven(3.6.0),JDK(1.8) Eureka: Eureka是Netflix开发...

倪伟伟
昨天
13
0
eclipse常用插件

amaterasUML https://takezoe.github.io/amateras-update-site/ https://github.com/takezoe/amateras-modeler modelGoon https://www.cnblogs.com/aademeng/articles/6890266.html......

大头鬼_yc
昨天
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部