pgsql json语法
时间: 2025-02-07 21:02:22 浏览: 44
### PostgreSQL 中 JSON 语法使用指南
#### 3.1 支持的数据类型
PostgreSQL 提供两种不同的 JSON 类型:`json` 和 `jsonb`。前者存储原始的 JSON 文本字符串,后者则是二进制格式表示的 JSON 对象[^1]。
```sql
CREATE TABLE my_table (
id serial PRIMARY KEY,
data jsonb NOT NULL
);
```
#### 3.2 插入 JSON 数据
向包含 JSON 字段的表中插入数据非常直观:
```sql
INSERT INTO my_table (data) VALUES ('{"name": "Alice", "age": 30}');
```
对于复杂对象或数组同样适用此方法。
#### 3.3 查询 JSON 数据
访问嵌套字段可以通过箭头运算符 (`->`) 或双箭头运算符(`->>`)实现;前者返回整个子树作为 JSON 值,后者提取纯文本形式的具体属性值。
```sql
SELECT data->'name' FROM my_table WHERE id = 1;
-- 结果 {"name":"Alice"}
SELECT data->>'name' FROM my_table WHERE id = 1;
-- 结果 Alice
```
#### 3.4 更新 JSON 数据
更新特定键的方法如下所示:
```sql
UPDATE my_table SET data = jsonb_set(data, '{age}', '31') WHERE id = 1;
```
这里使用了内置函数 `jsonb_set()` 来修改现有文档内的某个路径处的内容。
#### 3.5 删除 JSON 键
要移除某条记录里的单个键,则需借助 `-` 操作符完成:
```sql
UPDATE my_table SET data = data - 'age';
```
这条指令将会把所有符合条件行里名为 “age”的键删除掉。
#### 3.6 创建索引以加速查询
为了加快针对频繁检索到的信息的速度,在适当位置创建 GIN 或 GiST 索引是非常有帮助的做法之一:
```sql
CREATE INDEX idx_data ON my_table USING gin (data);
```
上述例子展示了如何基于 `gin` 构建覆盖整个 JSONB 列上的通用倒排索引。
阅读全文
相关推荐



















