博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
mysql中,创建包含json数据类型的表?创建json表时候的注意事项?查询json字段中某个key的值?...
阅读量:6285 次
发布时间:2019-06-22

本文共 3024 字,大约阅读时间需要 10 分钟。

需求描述:

  在mysql数据库中,创建包含json数据类型的表.记录下,在创建的过程中,需要注意的问题.

操作过程:

1.通过以下的语句,创建包含json数据类型的表

mysql> create table tab_json(id bigint not null auto_increment,data json,primary key(id));Query OK, 0 rows affected (0.09 sec)mysql> desc tab_json    -> ;+-------+------------+------+-----+---------+----------------+| Field | Type       | Null | Key | Default | Extra          |+-------+------------+------+-----+---------+----------------+| id    | bigint(20) | NO   | PRI | NULL    | auto_increment || data  | json       | YES  |     | NULL    |                |+-------+------------+------+-----+---------+----------------+2 rows in set (0.00 sec) 创建json数据类型的表,json字段不能包含默认值: mysql> create table tab_json_01(id bigint not null auto_increment,data json default '{"name":"Dear"}',primary key(id)); ERROR 1101 (42000): BLOB, TEXT, GEOMETRY or JSON column 'data' can't have a default value

备注:json数据类型的列不能有默认值.

2.向json数据类型中插入数据

mysql> insert into tab_json values (null,'{"name":"david","address":"Beijing","Tel":"132223232444"}');Query OK, 1 row affected (0.08 sec)mysql> insert into tab_json values (null,'{"name":"Mike","address":"Guangzhou","Tel":"13390989765"}');Query OK, 1 row affected (0.01 sec) mysql> insert into tab_json values (null,'Jack'); ERROR 3140 (22032): Invalid JSON text: "Invalid value." at position 0 in value for column 'tab_json.data' mysql> insert into tab_json values (null,'{"names":"Smith","names":"Nancy"}');  #插入的时候有多个names这个key Query OK, 1 row affected (0.00 sec)

备注:auto_increment字段通过插入null值,就能实现值的自动增长.json数据类型的类有自动检查插入的值是否是json类型的,如果插入的是json类型以外的,就会报错,也就是说,必须要插入json类型的值.

3.查询json表中的内容

mysql> select * from tab_json; +----+----------------------------------------------------------------+ | id | data                                                           | +----+----------------------------------------------------------------+ |  1 | {"Tel": "132223232444", "name": "david", "address": "Beijing"} | |  2 | {"Tel": "13390989765", "name": "Mike", "address": "Guangzhou"} | |  3 | {"names": "Smith"}                                             |  #在向json列插入值的时候同样执行标准化,即会将重复的key只保留第一个,即多个names的时候,也只是第一个被保留 +----+----------------------------------------------------------------+ 3 rows in set (0.00 sec)

备注:查询到data字段的值是json对象的值.

4.获取json数据类型中某个字段的值

mysql> select json_extract(data,'$.name'),json_extract(data,'$.address') from tab_json; +-----------------------------+--------------------------------+ | json_extract(data,'$.name') | json_extract(data,'$.address') | +-----------------------------+--------------------------------+ | "david"                     | "Beijing"                      | | "Mike"                      | "Guangzhou"                    | | NULL                        | NULL                           | +-----------------------------+--------------------------------+ 3 rows in set (0.00 sec)

备注:查询出来的就是key,name和address的对应的value.

 

文档创建:2018年6月5日14:07:57

文档更新-1:增加插入数据标准化的内容,标准化指的是,插入的时候,多个重复的key只保留第一个  -- 2018年6月6日16:57:54

转载于:https://www.cnblogs.com/chuanzhang053/p/9139540.html

你可能感兴趣的文章
阿里感悟(十八)- 应届生Review
查看>>
话说模式匹配(5) for表达式中的模式匹配
查看>>
《锋利的SQL(第2版)》——1.7 常用函数
查看>>
jquery中hover()的用法。简单粗暴
查看>>
线程管理(六)等待线程的终结
查看>>
spring boot集成mongodb最简单版
查看>>
DELL EqualLogic PS存储数据恢复全过程整理
查看>>
《Node.js入门经典》一2.3 安装模块
查看>>
《Java 开发从入门到精通》—— 2.5 技术解惑
查看>>
Linux 性能诊断 perf使用指南
查看>>
实操分享:看看小白我如何第一次搭建阿里云windows服务器(Tomcat+Mysql)
查看>>
Sphinx 配置文件说明
查看>>
数据结构实践——顺序表应用
查看>>
python2.7 之centos7 安装 pip, Scrapy
查看>>
机智云开源框架初始化顺序
查看>>
Spark修炼之道(进阶篇)——Spark入门到精通:第五节 Spark编程模型(二)
查看>>
一线架构师实践指南:云时代下双活零切换的七大关键点
查看>>
ART世界探险(19) - 优化编译器的编译流程
查看>>
玩转Edas应用部署
查看>>
music-音符与常用记号
查看>>