暂无图片
暂无图片
暂无图片
暂无图片
暂无图片
5.JSON数据类型.docx
28
13页
0次
2024-06-15
10墨值下载
JSON 简介
MySQL 5.7 开始支恃 JSON(JavaScript Object Notation)数据类型。在此之前,只能通过字
符类型(CHARVARCHAR TEXT )来保存 JSON 文档。
JSON 就是一串字符串,只不过元素会使用特定的符号标注。比如:
1. {} 双括号表示对象,
2. [] 中括号表示数组
3. "" 双引号内是属性或值
4. : 冒号表示后者是前者的值
MySQL JSON 文档以二进制格式存储,它提供以下功能:
1. 自动验证存储在 JSON 列中的 JSON 文档。无效文档产生错误。
2. 优化的存储格式。存储在 JSON 列中的 JSON 文档被转换为允许快速读取访问文档元
素的内部格式。二进制格式存储的 JSON 值。
3. 对文档元素的快速读取访问。当服务器再次读取 JSON 文档时,不需要重新解析文本
获取该值。通过键或数组索引直接查找子对象或嵌套值,而不需要读取文档中的所有
值。
4. 存储 JSON 文档所需的空间大致与 LONGBLOB LONGTEXT 相同
5. 存储在 JSON 列中的任何 JSON 文档的大小都仅限于 max_allowed_packet 系统变量
的值
JSON 的基本数据类型如下:
1. 数值:十进制数,不能有前导 0,可以为负数或小数,还可以为 e E 表示的指数。
2. 字符串:字符串必须用双引号括起来。
3. 布尔值:truefalse
4. 数组:一个由零或多个值组成的有序序列。每个值可以为任意类型。数组使用方括号
[] 括起来,元素之间用逗号,分隔。譬如,
[1, "abc", null, true, "10:27:06.000000", {"id": 1}]
5. 对象:一个由零或者多个键值对组成的无序集合。其中键必须是字符串,值可以为任
意类型。 对象使用花括号{}括起来,键值对之间使用逗号,分隔,键与值之间用冒号:
分隔。譬如, {"db": ["mysql", "oracle"], "id": 123, "info": {"age": 20}}
6. 空值:null
JSON 常用操作
插入数据
创建测试表
create table users(
id int,
info json
);
直接插入 JSON 格式的字符串。
insert into users values(1,'{"name":"zhangsan","age":18,"sex":1}');
insert into users values(2,'{"name":"lisi","age":20,"sex":1}');
使用函数插入,常用的有 JSON_ARRAY() JSON_OBJECT(),前者用于构造 JSON
组,后者用于构造 JSON 对象。
mysql> select json_array(1, "张三", null, true,now());
+---------------------------------------------------------+
| json_array(1, "张三", null, true,now()) |
+---------------------------------------------------------+
| [1, "张三", null, true, "2023-09-26 16:09:21.000000"] |
+---------------------------------------------------------+
1 row in set (0.00 sec)
mysql> select json_object('id', 1, 'name', '张三');
+----------------------------------------+
| json_object('id', 1, 'name', '张三') |
+----------------------------------------+
| {"id": 1, "name": "张三"} |
+----------------------------------------+
1 row in set (0.00 sec)
对于 JSON 文档,KEY 名不能重复。
如果插入的值中存在重复 KEY,遵循的是 last duplicate key wins 原则,只会保留最后一个
KEY
mysql> select json_object('id',1,'age',20,'id',2);
+-------------------------------------+
| json_object('id',1,'age',20,'id',2) |
+-------------------------------------+
| {"id": 2, "age": 20} |
+-------------------------------------+
1 row in set (0.00 sec)
查看数据
使用 column->path column->>path 查看
--返回的数据包含""
mysql> select info->"$.name" from users;
+----------------+
| info->"$.name" |
+----------------+
| "zhangsan" |
| "lisi" |
+----------------+
2 rows in set (0.00 sec)
--返回的数据不包含""
mysql> select info->>"$.name" from users;
+-----------------+
of 13
10墨值下载
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文档的来源(墨天轮),文档链接,文档作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论

关注
最新上传
暂无内容,敬请期待...
下载排行榜
Top250 周榜 月榜