📜  PostgreSQL – hstore 数据类型(1)

📅  最后修改于: 2023-12-03 15:18:38.456000             🧑  作者: Mango

PostgreSQL - hstore 数据类型

在 PostgreSQL 中,hstore 数据类型是一种键值对数据结构,可以存储多个键值对。它是一个袋子,可以将任何键值对存储在其中,而无需定义每个键的类型。

创建 hstore 表格

使用 CREATE TABLE 语句创建一个 hstore 表格:

CREATE TABLE users (
  id SERIAL PRIMARY KEY,
  name VARCHAR(50),
  properties HSTORE
);

在上面的示例中,我们创建了一个名为 users 的表格。properties 是一个 HSTORE 列,可以存储键值对。

添加键值对

我们可以使用 PostgreSQL 内置的 hstore 函数很容易地添加键值对。在下面的示例中,我们向表格中插入一些数据:

INSERT INTO users (name, properties) VALUES (
  'Alice', 'age => 25, city => "New York"',
  'Bob', 'age => 30, city => "San Francisco"'
);

在上面的示例中,我们添加了两个用户:Alice 和 Bob。我们为每个用户指定了一个名称,并使用 HSTORE 格式添加了一些属性。

查询键值对

我们可以使用运算符 ->#> 来检索属性。-> 返回指定键的值,而 #> 返回一个新的 hstore,其中只包含指定键的值。在下面的示例中,我们使用 ->#> 检索 Alice 的年龄和城市:

SELECT properties->'age', properties->'city' FROM users WHERE name = 'Alice';
SELECT properties#>'{age}', properties#>'{city}' FROM users WHERE name = 'Alice';

在上面的示例中,我们检索了 Alice 的年龄和城市。我们使用运算符 ->#>properties 列中检索相关值。

更新键值对

我们可以使用 hstore 函数很容易地更新现有的键值对。在下面的示例中,我们为 Alice 更新了她的城市,将其从 "New York" 更改为 "Chicago":

UPDATE users 
SET properties = properties || hstore('city', 'Chicago')
WHERE name = 'Alice';

在上面的示例中,我们使用运算符 || 合并两个 hstore。我们使用 hstore 函数将键值对 'city' => 'Chicago' 转换为 HSTORE。

删除键值对

我们可以使用 hstore 函数很容易地删除现有的键值对。在下面的示例中,我们从 Alice 的属性中删除了键 "city":

UPDATE users 
SET properties = properties - 'city'
WHERE name = 'Alice';

在上面的示例中,我们使用运算符 -properties 列中删除键值对。