Innodb Cluster 入门(1) Mysql的json数据类型

简介

•1.mysql从5.7.8开始,支持json数据类型。
•2.字段可以声明为:json。
•3.json类型字段存储的是符合json格式的字符串。
•4.mysql提供了一套函数,对json数据进行操作。

Json数据的存储
JSON documents stored in JSON columns are converted to an internal format that permits quick read access to document elements.When the server later must read a JSON value stored in this binary format, the value need not be parsed from a text representation. The binary format is structured to enable the server to look up subobjects or nested values directly by key or array index without reading all values before or after them in the document.

Json数据存储特征
•1.mysql以一种自定义的二进制格式存储json数据。
•2.当查询JSON数据中的某个节点数据时并不需要将全部JSON数据转化为字符串来处理。
•3.可以直接获得结构化二进制数据的某个节点数据,并按照JSON规范定义的类型返回数值。
•4.mysql的二进制JSON格式只支持读操作。

Json字段的容量设置
•1.json字段的容量受到mysql数据库系统变量max_allowed_packet的限制。
•2.可以编辑my.cnf配置文件设置:
   max_allowed_packet = 20M
•3.在数据库查看系统变量值:
   show VARIABLES like '%max_allowed_packet%';

Json字段定义
•CREATE TABLE user (
  id INT(11) NOT NULL COMMENT 'user id',
  data JSON NULL COMMENT 'user data',
  PRIMARY KEY (id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

添加记录
INSERT INTO user (id, data)
VALUES (1,
  '{"id":100,
  "name":"zhangsan",
  "age":63,  "student":{"school":"NewtonSchool",
  "teacher":"professorNiu"}}');

查询数据
SELECT data->"$.name"
FROM user
WHERE data->"$.age"> 60;

操作JSON数据
SET @param=
(SELECT data FROM user WHERE id=1);
SET @param=
(SELECT JSON_SET
 
(@param,
  '$.age',
  58));

修改记录
UPDATE user
SET data=@param
WHERE id=1;












你可能感兴趣的:(数据)