mysql中的json类型_MySQLjson类型
在本教程中,您将学习如何使⽤MySQL JSON数据类型将JSON⽂档存储在数据库中。
MySQL JSON数据类型简介
⾃MySQL5.7.8版本以来,MySQL⽀持原⽣JSON数据类型。允许使⽤原⽣JSON数据类型⽐以前MySQL版本中所使⽤JSON⽂本格式更能有效地存储JSON⽂档。
MySQL以内部格式存储JSON⽂档,允许对⽂档元素的快速读取访问。JSON⼆进制格式的结构是允许服务器通过键或数组索引直接搜索JSON⽂档中的值,这⾮常快。
JSON⽂档的存储⼤约与存储LONGBLOB或LONGTEXT数据量相同。
要定义数据类型为JSON的列,请使⽤以下语法:
CREATE TABLE table_name (
...
json_column_name JSON,
...
);
请注意,JSON列不能有默认值。 此外,JSON列不能直接编⼊索引。可以在包含从JSON列中提取的值的⽣成列上创建索引。当从JSON 列查询数据时,MySQL优化器将在匹配JSON表达式的虚拟列上查兼容的索引。
MySQL JSON数据类型⽰例
假设跟踪访客在⽹站上的⾏为。 ⼀些访问者可能只是查看页⾯,⽽其他访问者可能会查看页⾯并购买产品。 要存储这些信息,我们将创建⼀个名为events的新表。
USE testdb;
mysql帮助文档
CREATE TABLE events(
id int auto_increment primary key,
event_name varchar(255),
visitor varchar(255),
properties json,
browser json
);
事件表中的每个事件都有⼀个唯⼀标识事件的id。事件还有⼀个event_name列,例如浏览量,购买等。visitor列⽤于存储访问者信息。
properties和browser列是JSON类型。 它们⽤于存储访问者浏览⽹站的事件属性和浏览器信息(如版本,名称等等)。
我们将⼀些数据插⼊到events表中:
INSERT INTO events(event_name, visitor,properties, browser)
VALUES (
'pageview',
'1',
'{ "page": "/" }',
'{ "name": "Safari", "os": "Mac", "resolution": { "x": 1920, "y": 1080 } }'
),
('pageview',
'2',
'{ "page": "/contact" }',
'{ "name": "Firefox", "os": "Windows", "resolution": { "x": 2560, "y": 1600 } }' ),
(
'pageview',
'1',
'{ "page": "/products" }',
'{ "name": "Safari", "os": "Mac", "resolution": { "x": 1920, "y": 1080 } }'
),
(
'purchase',
'3',
'{ "amount": 200 }',
'{ "name": "Firefox", "os": "Windows", "resolution": { "x": 1600, "y": 900 } }' ),
(
'purchase',
'4',
'{ "amount": 150 }',
'{ "name": "Firefox", "os": "Windows", "resolution": { "x": 1280, "y": 800 } }' ),
(
'purchase',
'4',
'{ "amount": 500 }',
'{ "name": "Chrome", "os": "Windows", "resolution": { "x": 1680, "y": 1050 } }' );
要从JSON列中引出值,可以使⽤列路径运算符(->)。
SELECT id, browser->'$.name' browser FROM events;
此查询返回以下输出:
| Firefox | 3 |
| Chrome | 1 |
+---------+----------------+
3 rows in set (0.02 sec)
要计算访问者的总购买量,请使⽤以下查询:
SELECT visitor, SUM(properties->>'$.amount') revenue
FROM events
WHERE properties->>'$.amount' > 0
GROUP BY visitor;
上⾯查询语句的输出如下:
+---------+---------+
| visitor | revenue |
+---------+---------+
| 3 | 200 |
| 4 | 650 |
+---------+---------+
2 rows in set (0.00 sec)
在本教程中,您已经了解了MySQL JSON数据类型以及如何使⽤它来存储数据库中的JSON⽂档。¥ 我要打赏
纠错/补充
收藏
加QQ啦,易百教程官⽅技术学习
注意:建议每个⼈选⾃⼰的技术⽅向加,同⼀个QQ最多限加 3 个。