加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

navicat11.1系列版本查看不到json格式数据类型

(2019-11-16 16:31:23)
分类: PHP
  JSON我相信大家都已经很熟悉了,但在 MySQL中,直至 5.7 版本中,才正式引入 JSON数据类型。在此之前,我们通常使varchar或text数据类型存储JSON格式数据。
json数据类型字段长度为0  navicat11.2以下的版本查看不到json字段 只会显示其他的字段 导出也会出现问题,所以大家一定要细心

如何使用JSON?

  在这一章节,不再具体介绍JSON格式以及语法,我们来介绍一下,在MySQL中如何创建JSON数据列。 语法:

    create table t_base_data(
    id bigint(20) not null primary key auto_increment,
    content json
    )

新增数据:

insert into t_base_data (content)values('{"blog": "https://blog.csdn.net/qq_24549805", "account": "anzy"}');

注意:

    JSON列存储的必须是JSON格式数据,否则会报错。([SQL]insert into t_base_data (content)values('{blog": "https://blog.csdn.net/qq_24549805", "account": "anzy"}');
    [Err] 3140 - Invalid JSON text: "Missing a name for object member." at position 1 in value for column 't_base_data.content'.)

    JSON数据类型是没有默认值的。

更新数据:

UPDATE t_base_data SET `content` = '{"blog":"测试更新啦","account":"pine"}' WHERE `id` = 1;

查询数据:

SELECT * from t_base_data;

select JSON_EXTRACT(content,'$.blog'),JSON_EXTRACT(content,'$.account') from t_base_data;

返回结果如图:


可以看出JSON被解析拆分,但对于字符串会保留双引号,这种是利用函数方法进行JSON提取的,还可以利用虚列virtual

select JSON_EXTRACT(content,'$.blog'),JSON_EXTRACT(content,'$.account'),JSON_EXTRACT(content,'$.age') from t_base_data; 

有了虚列后就可以直接用虚列作为条件查询

    explain  select blog from t_base_data where blog = 'https://blog.csdn.net/qq_24549805';
    select blog from t_base_data where blog = '"https://blog.csdn.net/qq_24549805"'

通过执行计划可以看出是否走索引和where条件,对于虚列还可以增加索引,就像普通的列一样,不过更新时不需要对虚列再进行更新,直接更新JSON的内容后,虚列会同步更新,因为虚列其实就是个引用,不会冗余存储

增加虚列索引的SQL:

alter table t_base_data add index index_virtual (blog); 

再用执行计划查看是否走索引

 explain  select blog from t_base_data where blog = 'https://blog.csdn.net/qq_24549805';


从结果上看已经走索引了,优化效果达到。

大家尽量每一步sql都执行一下看看结果,有助于理解。
————————————————
版权声明:本文为CSDN博主「PineAnzy」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_24549805/article/details/80489723

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有