📅  最后修改于: 2023-12-03 15:18:38.456000             🧑  作者: Mango
在 PostgreSQL 中,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
列中删除键值对。