MySQL5.7中新增的JSON类型的使用方法
2017-03-07 02:20
483 查看
创建表json_test:
插入一条记录:
查看插入的这行JSON数据有哪些KEY:
可以看到里面有三个KEY,分别为authors,musicians,programmers。那现在找一个KEY把对应的值拿出来:
列出详细值:
删掉authors这个KEY对应的所有对象:
查找对应的KEY,发现已经被删除掉:
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_test\G *************************** 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 DESC\G *************************** 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 T\G *************************** 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_test\G *************************** 1. row *************************** authors_exists: 0 1 row in set (0.00 sec)
相关文章推荐
- MySQL5.7中新增的JSON类型的使用方法
- 【原创】MySQL5.7 JSON类型使用介绍
- sql server 创建table表 及添加各种约束 查看约束 删除约束 新增表的字段 规则及规则使用方法及应用到表中 时间函数的类型
- jquery 中$.post获取MVC Controller中JsonResult返回包含LIst<Model>类型的子List<Model>的高级使用方法
- 在.NET Core中使用MySQL5.7的JSON类型字段
- 使用简单的json.dumps方法对简单数据类型进行编码
- 原创】MySQL5.7 JSON类型使用介绍
- 使用Gson解析Json数组遇到的泛型类型擦除问题解决方法
- MySQL5.7 JSON类型使用介绍
- 关于使用group by对MySQL5.7的JSON类型进行分组
- Ajax前台返回JSON数据后再Controller中直接转换成类型使用,后台接收json转成实体的方法
- MySQL5.7 JSON类型使用介绍
- jquery 中$.post获取MVC Controller中JsonResult返回包含LIst<Model>类型的子List<Model>的高级使用方法
- 使用JSONObject.fromObject toBean方法 属性类型为 data Timestamp 的处理
- 改善C#程序的50种方法 条款6:明辨值类型和引用类型的使用场合
- 使用AO新增记录的3种方法
- haibernate3使用的DetachedCriteria的getExecutableCriteria(session)方法的类型错误
- 使用AO新增记录的3种方法
- 使用ASP.NET AJAX异步调用Web Service和页面中的类方法(9):服务器端和客户端数据类型的自动转换:DataTable和DataSet
- 使用ASP.NET AJAX异步调用Web Service和页面中的类方法(9):服务器端和客户端数据类型的自动转换:DataTable和DataSet