zoukankan      html  css  js  c++  java
  • MySQL5.7中新增的JSON类型的使用方法

    创建表json_test:

    CREATE TABLE json_test(id INT(11) AUTO_INCREMENT PRIMARY KEY,person_desc JSON)ENGINE INNODB;

    插入一条记录:

    INSERT INTO json_test(person_desc) VALUES ('{  
        "programmers": [{  
            "firstName": "Brett",  
            "lastName": "McLaughlin",  
            "email": "aaaa"  
        }, {  
            "firstName": "Jason",  
            "lastName": "Hunter",  
            "email": "bbbb"  
        }, {  
            "firstName": "Elliotte",  
            "lastName": "Harold",  
            "email": "cccc"  
        }],  
        "authors": [{  
            "firstName": "Isaac",  
            "lastName": "Asimov",  
            "genre": "sciencefiction"  
        }, {  
            "firstName": "Tad",  
            "lastName": "Williams",  
            "genre": "fantasy"  
        }, {  
            "firstName": "Frank",  
            "lastName": "Peretti",  
            "genre": "christianfiction"  
        }],  
        "musicians": [{  
            "firstName": "Eric",  
            "lastName": "Clapton",  
            "instrument": "guitar"  
        }, {  
            "firstName": "Sergei",  
            "lastName": "Rachmaninoff",  
            "instrument": "piano"  
        }]  
    }');

    查看插入的这行JSON数据有哪些KEY:

    mysql> SELECT id,json_keys(person_desc) as "keys" FROM json_testG  
    *************************** 1. row ***************************  
      id: 1  
    keys: ["authors", "musicians", "programmers"]  
    1 row in set (0.00 sec)

    可以看到里面有三个KEY,分别为authors,musicians,programmers。那现在找一个KEY把对应的值拿出来:

    mysql> SELECT json_extract(AUTHORS,'$.lastName[0]') AS 'name', AUTHORS FROM  
        -> (  
        -> SELECT id,json_extract(person_desc,'$.authors[0][0]') AS "authors" FROM json_test  
        -> UNION ALL  
        -> SELECT id,json_extract(person_desc,'$.authors[1][0]') AS "authors" FROM json_test  
        -> UNION ALL  
        -> SELECT id,json_extract(person_desc,'$.authors[2][0]') AS "authors" FROM json_test  
        -> ) AS T1  
        -> ORDER BY NAME DESCG  
    *************************** 1. row ***************************  
       name: "Williams"  
    AUTHORS: {"genre": "fantasy", "lastName": "Williams", "firstName": "Tad"}  
    *************************** 2. row ***************************  
       name: "Peretti"  
    AUTHORS: {"genre": "christianfiction", "lastName": "Peretti", "firstName": "Frank"}  
    *************************** 3. row ***************************  
       name: "Asimov"  
    AUTHORS: {"genre": "sciencefiction", "lastName": "Asimov", "firstName": "Isaac"}  
      
      
    3 rows in set (0.00 sec)

    列出详细值:

    mysql> SELECT  
        -> json_extract(AUTHORS,'$.firstName[0]') AS "firstname",  
        -> json_extract(AUTHORS,'$.lastName[0]') AS "lastname",  
        -> json_extract(AUTHORS,'$.genre[0]') AS "genre"  
        -> FROM  
        -> (  
        -> SELECT id,json_extract(person_desc,'$.authors[0]') AS "authors" FROM json  
    _test  
        -> ) AS TG  
    *************************** 1. row ***************************  
    firstname: "Isaac"  
     lastname: "Asimov"  
        genre: "sciencefiction"  
    1 row in set (0.00 sec)

    删掉authors这个KEY对应的所有对象:

    mysql> UPDATE json_test SET person_desc = json_remove(person_desc,'$.authors')G  
    Query OK, 1 row affected (0.01 sec)  
    Rows matched: 1  Changed: 1  Warnings: 0

    查找对应的KEY,发现已经被删除掉:

    mysql> SELECT json_contains_path(person_desc,'all','$.authors') as authors_exist  
    s FROM json_testG  
    *************************** 1. row ***************************  
    authors_exists: 0  
    1 row in set (0.00 sec)
  • 相关阅读:
    Spring MVC 核心组件详解
    Spring MVC 入门就这一篇
    Spring 事务解决方案
    【UGUI源码分析】Unity遮罩之Mask详细解读
    游戏开发中不同时区下的时间问题
    ARTS第十三周(阅读Tomcat源码)
    Win10 电脑安装.NET低版本提示“这台计算机中已经安装了 .NET Framwork 4.6.2或版本更高的更新”问题
    Dynamics 365 Setup 提示SqlServer 存在
    Dynamics CRM "Verification of prerequisites for Domain Controller promotion failed. Certificate Server is installed."
    Dynamics CRM
  • 原文地址:https://www.cnblogs.com/webenh/p/6512824.html
Copyright © 2011-2022 走看看