pgsql jsonb
时间: 2024-12-31 21:38:59 浏览: 29
PostgreSQL JSONB 数据类型的使用和操作
什么是JSONB
jsonb
是一种二进制存储格式的 JSON 数据类型,在 PostgreSQL 中提供了高效的存储方式。与 json
类型不同的是,jsonb
存储的数据会被解析并规范化为键值对结构,这使得查询更加高效[^2]。
创建包含 JSONB 列的表
为了创建一个带有 jsonb
字段的表格,语法如下所示:
CREATE TABLE example (
id serial PRIMARY KEY,
data jsonb NOT NULL
);
此命令会建立一张名为 example
的新表,其中有一个自动增长的主键列 id
和一个不可为空的 data
列来保存 JSON 对象形式的数据[^1]。
插入 JSONB 数据
向上述创建好的表中插入一条记录的方法很简单:
INSERT INTO example (data) VALUES ('{"name": "Alice", "age": 30}');
这段 SQL 将一个新的 JSON 文档作为字符串传递给 data
字段,并将其转换成内部表示法存入数据库中。
查询 JSONB 数据
PostgreSQL 提供了一系列针对 jsonb
的专用操作符来进行复杂条件下的检索工作。例如,要查找所有含有特定键值对的对象可采用下面的方式:
查找对象内存在某个键的情况:
```sql
SELECT * FROM example WHERE data ? 'key';
- 检查是否存在指定路径上的子项:
```sql
SELECT * FROM example WHERE data @> '{"subKey": {"nestedKey": true}}'::jsonb;
以上两个例子分别展示了如何利用 ?
及其变体 <@>
来执行基于模式匹配的任务;而后者则通过比较整个文档或部分片段是否相等完成筛选过程。
更新 JSONB 数据
更新现有条目中的某些属性也十分便捷:
UPDATE example SET data = jsonb_set(data, '{newField}', '"newValue"', true) WHERE id = 1;
这里的函数调用将修改 ID 为 1 的那行数据里的 data
增加新的字段 newField
并赋初值 "newValue"
。如果该位置已经存在同名成员,则覆盖之;反之则是新增加一项。
相关推荐


















