Login
网站首页 > 文章中心 > 其它

mysql中_创建包含json数据类型的表?创建json表时候的注意事项?查询json字段中某个key的值?

作者:小编 更新时间:2023-08-08 14:04:22 浏览量:369人看过

需求描述:

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

操作过程:

①通过以下的语句,创建包含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数据类型的列不能有默认值.

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类型的值.

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的时候,也只是第一个被保留

+----+----------------------------------------------------------------+

备注:查询到data字段的值是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????? |

+-----------------------------+--------------------------------+

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

以上就是土嘎嘎小编为大家整理的mysql中_创建包含json数据类型的表?创建json表时候的注意事项?查询json字段中某个key的值?相关主题介绍,如果您觉得小编更新的文章只要能对粉丝们有用,就是我们最大的鼓励和动力,不要忘记讲本站分享给您身边的朋友哦!!

版权声明:倡导尊重与保护知识产权。未经许可,任何人不得复制、转载、或以其他方式使用本站《原创》内容,违者将追究其法律责任。本站文章内容,部分图片来源于网络,如有侵权,请联系我们修改或者删除处理。

编辑推荐

热门文章