良精企业网站系统,百度识图搜索引擎,单仁网站建设,公司网站建设计入科目前言
今天接触到mysql中json数据类型#xff0c;之前不知道有这个类型#xff0c;今天学习一下。
JSON我相信大家都已经很熟悉了#xff0c;但在 MySQL中#xff0c;直至 5.7 版本中#xff0c;才正式引入 JSON数据类型。在次之前#xff0c;我们通常使varchar或text数…前言
今天接触到mysql中json数据类型之前不知道有这个类型今天学习一下。
JSON我相信大家都已经很熟悉了但在 MySQL中直至 5.7 版本中才正式引入 JSON数据类型。在次之前我们通常使varchar或text数据类型存储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都执行一下看看结果有助于理解。