1. 背景
* 在MySQL 5.7.8中,MySQL支持由RFC 7159定义的本地JSON数据类型,它支持对JSON(JavaScript对象标记)文档中的数据进行有效访问.
* MySQL会对DML JSON数据自动验证。无效的DML JSON数据操作会产生错误.
* 优化的存储格式。存储在JSON列中的JSON文档转换为一种内部格式,允许对Json元素进行快速读取访问.
* MySQL Json类型支持建立索引增加查询性能提升.
2. Json类型所需的存储空间和值范围类型占用字节最大长度
Json数据长度 + 4 bytes4G
3. Json相关函数操作
* JSON_OBJECT(string1, string2...) 创建 key-value 类型 Json 对象mysql> SELECT JSON_OBJECT('k1', 'v1', 'k2', 'v2');
+-------------------------------------+
| JSON_OBJECT('k1', 'v1', 'k2', 'v2') |
+-------------------------------------+
| {"k1": "v1", "k2": "v2"} |
+-------------------------------------+
1 row in set (0.01 sec)
* JSON_ARRAY(string1, string2...) 创建一个 Json 数组mysql> SELECT JSON_ARRAY('a', 'b', 'c', 'd');
+--------------------------------+
| JSON_ARRAY('a', 'b', 'c', 'd') |
+--------------------------------+
| ["a", "b", "c", "d"] |
+--------------------------------+
1 row in set (0.00 sec)
* JSON_TYPE(object) 判断并显示数据类型 [ 值非法会报错显示 ]mysql> SELECT JSON_TYPE('"lisea"');
+----------------------+
| JSON_TYPE('"lisea"') |
+----------------------+
| STRING |
+----------------------+
1 row in set (0.01 sec)
mysql> SELECT JSON_TYPE('["a", "b", 1]');
+----------------------------+
| JSON_TYPE('["a", "b", 1]') |
+----------------------------+
| ARRAY |
+----------------------------+
1 row in set (0.01 sec)
mysql> SELECT JSON_TYPE('1');
+----------------+
| JSON_TYPE('1') |
+----------------+
| INTEGER |
+----------------+
1 row in set (0.00 sec)
mysql> SELECT JSON_TYPE('{"k1":"v1", "k2":"v2"}');
+-------------------------------------+
| JSON_TYPE('{"k1":"v1", "k2":"v2"}') |
+----------------------------------