在 PostgreSQL 中,JSON(JavaScript Object Notation)是一种用于存储和交换数据的文本格式。PostgreSQL 提供了 json 和 jsonb 两种类型来存储 JSON 数据。

1. json 类型: 存储 JSON 数据,但保留原始的 JSON 文本格式。在查询时解析 JSON 数据。
   -- 示例:创建包含 json 类型的表
   CREATE TABLE my_table (
       id SERIAL PRIMARY KEY,
       json_data JSON
   );

   -- 示例:插入 JSON 数据
   INSERT INTO my_table (json_data) VALUES
       ('{"name": "John", "age": 30}'),
       ('{"name": "Jane", "age": 25}');

   查询时,你可以直接访问 JSON 中的属性:
   -- 示例:查询 JSON 数据中的属性
   SELECT json_data->>'name' AS person_name
   FROM my_table;

2. jsonb 类型: 存储二进制形式的 JSON 数据,支持更高效的查询和索引。
   -- 示例:创建包含 jsonb 类型的表
   CREATE TABLE my_table (
       id SERIAL PRIMARY KEY,
       jsonb_data JSONB
   );

   -- 示例:插入 JSON 数据
   INSERT INTO my_table (jsonb_data) VALUES
       ('{"name": "John", "age": 30}'),
       ('{"name": "Jane", "age": 25}');

   jsonb 类型在查询时可以使用更多的索引和操作符:
   -- 示例:查询 JSONB 数据中的属性
   SELECT jsonb_data->>'name' AS person_name
   FROM my_table;

   jsonb 支持更复杂的查询,例如在 JSON 数组中查找元素、比较 JSON 对象等。

选择使用 json 还是 jsonb 取决于具体的应用场景。一般来说,如果需要更高效的查询和索引支持,推荐使用 jsonb 类型。

这些 JSON 数据类型提供了灵活的方式来存储和查询半结构化的数据,适用于许多应用场景,例如存储配置信息、日志数据等。


转载请注明出处:http://www.zyzy.cn/article/detail/8162/PostgreSQL