今天咱们来讲一说,MySQL JSON数据类型,JSON我相信你们都已经很熟悉了,(Java对象与JSON互转,能够查看《fastjson详解》这篇文章),但在 MySQL中,直至 5.7 版本中,才正式引入 JSON数据类型。在次以前,咱们一般使varchar或text数据类型存储JSON格式数据。mysql
在这一章节,再也不具体介绍JSON格式以及语法,咱们来介绍一下,在MySQL中如何建立JSON数据列。 语法:sql
create table t_base_data( id bigint(20) not null primary key auto_increment, content json )
新增数据:json
mysql> insert into t_base_data (content)values('{"blog": "www.andyqian.com", "account": "andyqian"}'); Query OK, 1 row affected (0.01 sec)
这里须要注意的是:数组
JSON列存储的必须是JSON格式数据,不然会报错。函数
JSON数据类型是没有默认值的。优化
你们都应该知道,在没有JSON数据类型时,还不是同样可使用varchar类型或text类型来存储就JSON格式的字符串,那么,JSON格式到底哪些“过人"之处呢?好处还真很多呢。spa
JSON数据类型,会自动校验数据是否为JSON格式,若是不是JSON格式数据,则会报错。code
MySQL提供了一组操做JSON数据的内置函数。对象
优化的存储格式,存储在JSON列中的JSON数据被转换成内部的存储格式。其容许快速读取。blog
能够修改特定的键值,(若是以前在MySQL中存储过JSON格式字符串的小伙伴,应该经历过每次修改一个值,都要将整个JSON字符串更新一遍的尴尬。)
你看,上面这些好处,诱惑足够大吗?
MySQL中,给咱们提供了很多JSON相关的函数,简直让咱们爱不释手,下面一一来介绍经常使用的JSON函数。
注意:如下示例MySQL版本为: 5.7.20
1. JSON_TYPE 函数
做用: 显示当前JSON字符串的类型。
例如:
mysql> select json_type('"hello"'); +----------------------+ | json_type('"hello"') | +----------------------+ | STRING | +----------------------+ 1 row in set (0.00 sec)
集合类型:
mysql> select json_type('["andyqian","Java","xingming"]'); +---------------------------------------------+ | json_type('["andyqian","Java","xingming"]') | +---------------------------------------------+ | ARRAY | +---------------------------------------------+ 1 row in set (0.00 sec)
2. JSON_ARRAY 函数
做用: 将数组对象转换为json数组
例如:
mysql> select json_array(1,now(),"andyqian"); +-----------------------------------------------+ | json_array(1,now(),"andyqian") | +-----------------------------------------------+ | [1, "2017-12-07 23:05:41.000000", "andyqian"] | +-----------------------------------------------+ 1 row in set (0.00 sec)
其中json_array参数待转换为json的对象集合,对Java熟悉的童鞋,能够当作是集合。
3. JSON_OBJECT 函数
语法:JSON_OBJECT(key,value,key1,value1)
做用:将对象转换为json格式数据
例如:
mysql> select json_object('name','鞠骞','account','andyqian'); +---------------------------------------------------+ | json_object('name','鞠骞','account','andyqian') | +---------------------------------------------------+ | {"name": "鞠骞", "account": "andyqian"} | +---------------------------------------------------+ 1 row in set (0.00 sec)
4. JSON_QUOTE 函数
做用: 引用字符串做为json值。
例如:
mysql> select json_quote('"andyqian"'); +--------------------------+ | json_quote('"andyqian"') | +--------------------------+ | "\"andyqian\"" | +--------------------------+ 1 row in set (0.00 sec)
这里须要注意的是:
若是参数为null值,显示也为Null值。
JSON_UNQUOTE 函数与JSON_QUOTE 函数做用正好相反。
5. JSON_MERGE函数
做用: 合并JSON字符串
例如:
mysql> select json_merge('{"blog":"www.andyqian.com"}','{"account":"andyqian"}'); +--------------------------------------------------------------------+ | json_merge('{"blog":"www.andyqian.com"}','{"account":"andyqian"}') | +--------------------------------------------------------------------+ | {"blog": "www.andyqian.com", "account": "andyqian"} | +--------------------------------------------------------------------+ 1 row in set (0.00 sec)
做用: 判断JSON格式是否有效 例如:
mysql> select json_valid("andyqian"),json_valid('"andyqian"'),json_valid(null); +------------------------+--------------------------+------------------+ | json_valid("andyqian") | json_valid('"andyqian"') | json_valid(null) | +------------------------+--------------------------+------------------+ | 0 | 1 | NULL | +------------------------+--------------------------+------------------+ 1 row in set (0.00 sec)
这里须要注意的是: 0 表示无效,1 表示有效,NUll 表示参数为null。
MySQL提供了很多操做JSON数据的函数,这里只给出一些常见的函数,更多请参考官网查看。
因为上面描述了很多重要的函数,避免带来阅读疲劳,今天就不写命令了。另外,今天数了数,MySQL系列文章,也有十多篇了,感受还有很多东西,能够记录,这个系列还会写一段时间,在这期间,大家有想让我分享的文章,也能够留言哦。
PS:我负责写文章,大家帮忙点赞,留言,转发可好?
推荐文章
扫码关注,一块儿进步
我的博客: http://www.andyqian.com