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                       | +------------------------------+