13.12 JSON
在本教程中,您将学习如何使用MySQL JSON
数据类型将JSON
文档存储在数据库中。
MySQL JSON数据类型简介
自MySQL5.7.8版本以来,MySQL支持原生JSON数据类型。允许使用原生JSON数据类型比以前MySQL版本中所使用JSON文本格式更能有效地存储JSON文档。
MySQL以内部格式存储JSON文档,允许对文档元素的快速读取访问。JSON二进制格式的结构是允许服务器通过键或数组索引直接搜索JSON文档中的值,这非常快。
JSON文档的存储大约与存储LONGBLOB
或LONGTEXT
数据量相同。
要定义数据类型为JSON的列,请使用以下语法:
请注意,JSON列不能有默认值。 此外,JSON列不能直接编入索引。可以在包含从JSON列中提取的值的生成列上创建索引。当从JSON列查询数据时,MySQL优化器将在匹配JSON表达式的虚拟列上查找兼容的索引。
MySQL JSON数据类型示例
假设跟踪访客在网站上的行为。 一些访问者可能只是查看页面,而其他访问者可能会查看页面并购买产品。 要存储这些信息,我们将创建一个名为events
的新表。
事件表中的每个事件都有一个唯一标识事件的id
。事件还有一个event_name
列,例如浏览量,购买等。visitor
列用于存储访问者信息。
properties
和browser
列是JSON类型。 它们用于存储访问者浏览网站的事件属性和浏览器信息(如版本,名称等等)。
我们将一些数据插入到events
表中:
要从JSON列中引出值,可以使用列路径运算符(->
)。
此查询返回以下输出:
请注意,上面查询语句要在命令中连接到MySQL服务器(mysql -hlocalhost -uroot -p
)。可以看到browser
列中的数据被引号包围。要删除引号,请使用内联路径运算符( ->>
),如下所示:
从以下输出可以看出,引号已被删除:
要获取浏览器的使用情况,可以使用以下语句:
上面查询语句的输出如下:
要计算访问者的总购买量,请使用以下查询:
上面查询语句的输出如下:
在本教程中,您已经了解了MySQL JSON
数据类型以及如何使用它来存储数据库中的JSON
文档。
Last updated