MySQL数据类型JSON
MySQL 5.7.8 版本开始支持JSON类型,在JSON类型支持之前,通常使用字符串类型存储JSON数据,相对于字符串,原生的JSON类型能够对数据的有效性进行验证。JSON类型独特的内部存储格式和索引,能够更加高效的访问JSON数据节点。另外MySQL提供丰富的JSON类型相关函数,JSON数据的查询与操作更加便捷。
1、JSON类型优势:
- 自动验证JSON数据的有效性,不符合JSON规范的数据将会提示报错。
- 优化存储格式,JSON类型在存储时被转换成一种内部的格式,能够快速地访问JSON文档数据的元素。
- 丰富的JSON类型相关函数,JSON数据操作更加便捷。
2、常用的JSON类型:
- JSON数组,如:[1,2]
- JSON对象,如:{"key":"value"}
示例:
创建一个包含JSON类型的表:
create table tb(c json);
插入JSON数据:
insert into tb values('[1,2]');
insert into tb values('{"key":"value"}');
查询表中JSON数据的值:
select c->"$.key" from tb;
查出来的结果是带引号的,想去除引号的话,把->换成->>,如下:
select c->>"$.key" from tb;
3、JSON函数:
- JSON_TYPE()
- JSON_VALID()
- JSON_ARRAY()
- JSON_OBJECT()
- JSON_MERGE()
- JSON_EXTRACT()
- JSON_SET()
- JSON_INSERT()
- JSON_REPLACE()
- JSON_REMOVE()
- JSON_SEARCH()
- JSON_CONTAINS_PATH()
3.1 JSON_TYPE()
JSON_TYPE() 函数返回 JSON数据的类型,JSON数组返回ARRAY,JSON对象返回OBJECT,如下所示:
mysql> select JSON_TYPE('[1,2]');
+--------------------+
| JSON_TYPE('[1,2]') |
+--------------------+
| ARRAY |
+--------------------+
mysql> select JSON_TYPE('{"key":"value"}');
+------------------------------+
| JSON_TYPE('{"key":"value"}') |
+------------------------------+
| OBJECT |
+------------------------------+