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;












评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值