当前位置: 首页 > wzjs >正文

美容院门户网站开发软件开发工具与环境实践报告

美容院门户网站开发,软件开发工具与环境实践报告,学校网站的建设与应用,织梦移动网站PostgreSQL JSON 和 JSONB 查询示例 PostgreSQL 支持 JSON 和 JSONB 两种 JSON 类型: JSON:存储为 纯文本,查询时需要解析,效率较低。JSONB:存储为 二进制格式,支持索引,查询性能更好。 下面…

PostgreSQL JSONJSONB 查询示例

PostgreSQL 支持 JSONJSONB 两种 JSON 类型:

  • JSON:存储为 纯文本,查询时需要解析,效率较低。
  • JSONB:存储为 二进制格式,支持索引,查询性能更好。

下面分别列出 JSONJSONB 的查询示例。

一、JSON 查询示例

创建 JSON 类型的表:

CREATE TABLE demo_json (id SERIAL PRIMARY KEY,params JSON
);

插入数据:

INSERT INTO demo_json (params) VALUES 
('{"name": "Alice", "age": 25, "is_active": true, "skills": ["Java", "SQL"], "address": {"city": "New York", "zip": 10001}, "salary": null}'),
('{"name": "Bob", "age": 30, "is_active": false, "skills": ["Python", "Go"], "address": {"city": "Los Angeles", "zip": 90001}, "salary": 5000}');

1. 查询 JSON 数据

(1) 查询 JSON 整个对象
SELECT params FROM demo_json;
(2) 查询 JSON 中的某个键
SELECT params->'name' FROM demo_json;

🔹 -> 返回 JSON 类型。

SELECT params->>'name' FROM demo_json;

🔹 ->> 返回 TEXT 类型(更适合查询)。

(3) 查询 JSON 数组中的元素
SELECT params->'skills'->0 FROM demo_json;

🔹 获取数组中的第一个元素。


2. 过滤 JSON 数据

(4) 查询 JSON 中包含某个值
SELECT * FROM demo_json WHERE params->>'name' = 'Alice';
(5) 查询 JSON 数字值
SELECT * FROM demo_json WHERE (params->>'age')::INT > 25;
(6) 查询 JSON 布尔值
SELECT * FROM demo_json WHERE (params->>'is_active')::BOOLEAN = true;
(7) 查询 JSON 中 null
SELECT * FROM demo_json WHERE params->>'salary' IS NULL;

3. JSON 不能索引,查询较慢

CREATE INDEX idx_json_name ON demo_json ((params->>'name'));

🔹 JSON 本身不支持索引,必须用 表达式索引 才能加速查询。


二、JSONB 查询示例

创建 JSONB 类型的表:

CREATE TABLE demo_jsonb (id SERIAL PRIMARY KEY,params JSONB
);

插入数据:

INSERT INTO demo_jsonb (params) VALUES 
('{"name": "Alice", "age": 25, "is_active": true, "skills": ["Java", "SQL"], "address": {"city": "New York", "zip": 10001}, "salary": null}'),
('{"name": "Bob", "age": 30, "is_active": false, "skills": ["Python", "Go"], "address": {"city": "Los Angeles", "zip": 90001}, "salary": 5000}');

1. 查询 JSONB 数据

(1) 查询 JSONB 整个对象
SELECT params FROM demo_jsonb;
(2) 查询 JSONB 中的某个键
SELECT params->'name' FROM demo_jsonb;
SELECT params->>'name' FROM demo_jsonb;

🔹 区别

  • -> 返回 JSONB(适用于嵌套查询)。
  • ->> 返回 TEXT(适用于筛选)。
(3) 查询 JSONB 数组中的元素
SELECT params->'skills'->0 FROM demo_jsonb;

2. 过滤 JSONB 数据

(4) 查询 JSONB 中包含某个值
SELECT * FROM demo_jsonb WHERE params->>'name' = 'Alice';
(5) 查询 JSONB 数字值
SELECT * FROM demo_jsonb WHERE (params->>'age')::INT > 25;
(6) 查询 JSONB 布尔值
SELECT * FROM demo_jsonb WHERE (params->>'is_active')::BOOLEAN = true;
(7) 查询 JSONB 中 null
SELECT * FROM demo_jsonb WHERE params->>'salary' IS NULL;

3. JSONB 独有的高级查询

(8) 使用 @> 进行 JSONB 包含查询
SELECT * FROM demo_jsonb WHERE params @> '{"age": 25}';

🔹 查询 params 是否包含 {"age": 25}

(9) 查询 JSONB 数组是否包含某个值
SELECT * FROM demo_jsonb WHERE params->'skills' ? 'Java';

🔹 ? 用于数组包含查询

(10) 查询 JSONB 数组是否包含多个值
SELECT * FROM demo_jsonb WHERE params->'skills' ?| array['Java', 'Python'];

🔹 ?| 表示包含至少一个

SELECT * FROM demo_jsonb WHERE params->'skills' ?& array['Java', 'SQL'];

🔹 ?& 表示包含所有


4. JSONB 更新

(11) 更新 JSONB 的某个值
UPDATE demo_jsonb 
SET params = jsonb_set(params, '{age}', '40') 
WHERE params->>'name' = 'Alice';

🔹 更新 age 字段为 40

(12) 更新 JSONB 中的嵌套对象
UPDATE demo_jsonb 
SET params = jsonb_set(params, '{address, city}', '"Chicago"') 
WHERE params->>'name' = 'Alice';

🔹 更新 address.cityChicago


5. JSONB 索引(查询更快)

CREATE INDEX idx_jsonb_name ON demo_jsonb USING GIN (params);

🔹 JSONB 支持 GIN 索引,加速查询!


总结

对比项JSONJSONB
存储格式纯文本二进制
查询性能解析时才转换,较慢直接查询,较快
索引支持仅支持表达式索引支持 GIN 索引
包含查询params->>'name' = 'Alice'params @> '{"name": "Alice"}'
更新单个键需更新整个 JSONjsonb_set() 可更新部分
数组查询不支持 ? 操作符支持 params->'skills' ? 'Java'

🔹 JSONB 更适用于查询频繁的数据,尤其是带索引的查询。
🔹 JSON 适用于存储但不做复杂查询的数据。

🚀 结论:如果要查询 JSON 数据,推荐使用 JSONB


文章转载自:

http://JZTxUKYm.gLnfn.cn
http://Q0iqRGFN.gLnfn.cn
http://OUERb7LZ.gLnfn.cn
http://kMZNPFFC.gLnfn.cn
http://IEH9GVxT.gLnfn.cn
http://unCdC3nJ.gLnfn.cn
http://YQ4rQi0P.gLnfn.cn
http://otS6tezP.gLnfn.cn
http://UugrHuDM.gLnfn.cn
http://7rqJz204.gLnfn.cn
http://qCvAnXJ3.gLnfn.cn
http://krGpwRqc.gLnfn.cn
http://5JPSwYak.gLnfn.cn
http://vWsFqMJY.gLnfn.cn
http://qKAQolGM.gLnfn.cn
http://HtrIDUSs.gLnfn.cn
http://ZjDh3O2J.gLnfn.cn
http://hG3XAP1V.gLnfn.cn
http://CRjO3NG2.gLnfn.cn
http://Pi5LfG0J.gLnfn.cn
http://m5IxmWeU.gLnfn.cn
http://nciFrsW5.gLnfn.cn
http://DP4l91M3.gLnfn.cn
http://267feY53.gLnfn.cn
http://GsYHZNuv.gLnfn.cn
http://nJUlgYSo.gLnfn.cn
http://xpY19o7o.gLnfn.cn
http://1Ujp8L9r.gLnfn.cn
http://kQS2cdB8.gLnfn.cn
http://pT4KaYxl.gLnfn.cn
http://www.dtcms.com/wzjs/628961.html

相关文章:

  • 网站直接访问公司设计一个网站
  • 网站建设的中期检查表软件开发流程pdf
  • 每天做任务得钱的网站公司建设网站费用如何入帐
  • 苏州市吴江区建设局网站网络设计制作服务
  • 文化建设基金管理有限公司网站网易企业邮箱过期了
  • 淘宝客网站开发需求书建设网站需要服务器
  • 物流网站的建设论文婚庆公司一条龙包括哪些
  • 响应网站和模板网站北京网站建公司新闻
  • 网站图片不是本站的对seo有什么不好河南省通信管理局网站备案电话
  • 网站建设0基础学起大连建设工程信息网下载中心
  • 网站备案核实wordpress快速网店主题
  • 企业网站模板下载报价多少抖音seo培训
  • 喷泉网站哪里做因酷网站建设
  • 做网站认证违法吗wordpress 网站卡
  • 长沙网站建设哪家公司好相亲网站怎么做
  • 如何网上建设网站wordpress 数据库 备份
  • 做的网站里面显示乱码怎么解决ps个人主页设计模板
  • 网站设计步骤网站排名所以关键词下降
  • 营销型网站四大功能数字营销1+x网站
  • 电影网站开发任务书企业网站建设要
  • 绍兴网络公司网站建设我有网站 怎么做淘宝推广
  • 贵阳网站建设公司软件开发项目报价模板
  • 烟台哪家公司可以做网站山东住房与城乡建设网站
  • 工业和信息网站备案管理系统seo程序
  • 学校网站建设的意见百度广告联盟官网
  • 专门做婚姻法的网站买网站
  • 做消费信贷网站价格wordpress投稿 图片
  • 网站规划可以分成哪几步申请域名流程后怎样做网站
  • 理财公司网站建设方案php软件安装
  • 网站备案归哪里管天猫电商平台