美文网首页
mysql对JSON数据操作

mysql对JSON数据操作

作者: sickle4j | 来源:发表于2022-07-04 11:32 被阅读0次

总所周知,mysql5.7以上提供了一种新的字段格式-json,大概是mysql想把非关系型和关系型数据库一口通吃,所以推出了这种非常好用的格式,这样,我们的很多基于mongoDb或者clickHouse的业务都可以用mysql去实现了。当然了,5.7的版本只是最基础的版本,对于海量数据的效率是远远不够的,不过这些都在mysql8.0解决了。今天我们就针对mysql的json数据格式操作做一个简单的介绍。

准备数据

CREATE TABLE `user` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(255) DEFAULT NULL,
  `json_value` json DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8;
INSERT INTO `user` ( `name`, `json_value`) VALUES ( '张三', '{"age": 26, "sex": "男", "report": {"maths": 100, "chinese": 100}}');
INSERT INTO `user` ( `name`, `json_value`) VALUES ( '李四', '{"age": 18, "sex": "男", "report": {"maths": 89, "chinese": 60}}');
INSERT INTO `user` ( `name`, `json_value`) VALUES ( '王五', '{"age": 30, "sex": "女", "report": {"maths": 94, "chinese": 73}}');

一般基础查询操作

1、使用 json字段名->’$.json属性’ 进行查询条件

查询年龄是26岁的人

SELECT * FROM USER where json_value -> '$.age' = 26;
image.png

2、使用 json字段名进行多条件查询

SELECT * FROM USER where json_value -> '$.age' = 26 and  json_value -> '$.sex' = '男';
image.png

如果涉及多层使用'.'进行拼接

SELECT * FROM USER where json_value -> '$.report.maths' = 89;
image.png

mysql 提供的函数

官网地址:https://dev.mysql.com/doc/refman/8.0/en/json-function-reference.html

INSERT INTO `user` ( `name`, `json_value`) VALUES ( '牛', '{"age": 30, "sex": "女", "report": {"maths": 94, "chinese": 73}, "message": [{"area_code": "11111", "area_name": "test1"}, {"area_code": "22222", "area_name": "test2"}, {"area_code": "33333", "area_name": "test3"}]}}');

查询area_code有11111和44444

SELECT
    * 
FROM
    user q 
WHERE
    JSON_CONTAINS(
        q.json_value -> '$.message',
        JSON_ARRAY(
        JSON_OBJECT( 'area_code', '11111' ))) 
    OR JSON_CONTAINS(
        q.json_value -> '$.message',
        JSON_ARRAY(
        JSON_OBJECT( 'area_code', '44444' )))

相关文章

  • mysql对JSON数据操作

    总所周知,mysql5.7以上提供了一种新的字段格式-json,大概是mysql想把非关系型和关系型数据库一口通吃...

  • MySql 5.7对json数据操作

    创建表 CREATE TABLE t_json(id INT PRIMARY KEY, NAME VARCHAR(...

  • mysql json 查询

    mysql json 查询 MySQL 5.7新增对JSON支持 1. 普通 json 查询 数据 查询语句 数...

  • mysql json

    对mysql中json类型的字段查询操作

  • MySQL之JSON数据类型CRUD

    JSON数据类型: 从mysql5.7.8开始开始支持,json数据类型。可以通过客户端创建json字段表并操作检...

  • python对mysql的操作

    python对mysql的操作 Mysql 常见操作 数据库操作 PS:用户权限相关数据保存在mysql数据库的u...

  • 2020-09-01 MySQL中Json中key随机排序解决方

    背景: 在MySQL中,是有json字段类型的,同时也有json操作的相关方法,也提供json数据的校验,给我们保...

  • MySQL处理Json数据

    备注: 版本: MySQL 8.0 一. Json数据存储 MySQL 8.0提供了json数据类型来存储json...

  • mysql数据库json数据的操作

    经常忘记mysql数据中json数据的操作方式,笔记记录一下 #创建表 CREATE TABLE `test_js...

  • MySQL JSON 类型数据操作

    1、Java 中动态扩展字段,会导致数据库表被锁,在MySQL 5.7.8版本之前,因为MySQL不能直接操作JS...

网友评论

      本文标题:mysql对JSON数据操作

      本文链接:https://www.haomeiwen.com/subject/yxrdbrtx.html