PostgreSQL教程

PostgreSQL hstore

在本节中,我们将了解 hstore数据的 PostgreSQL hstore数据类型,示例的工作原理类型,我们还会看到带有 WHERE 子句的 hstore 的示例,它有助于我们处理 hstore数据值
我们将了解如何在PostgreSQL hstore数据类型中 添加,更新,删除 键-值对
我们将讨论以下运算符,例如 ->运算符(以选择特定值的数据), ?运算符(用于检查hstore列中的显式键 ),@>运算符(用于检查键值对 ),?&和?|运算符(选择其hstore列具有各种键的行。
还可以看到 avals(),svals(),akeys()skeys(),EACH(), hstore_to_json()函数。

什么是PostgreSQL hstore数据类型?

在 PostgreSQL ,我们要了解的下一个数据类型是 hstore ,它用于将 键值对存储在单位值中。这始终是正确的方法,适用于不常见的带有服务属性的各种情况,例如半结构化数据或行。
注意: 基本上,键和值是文本字符串。

PostgreSQL hstore数据类型的语法

PostgreSQL hstore数据类型的语法如下:
variable_name hstore;
在开始学习hstore数据类型之前,我们必须首先允许hstore扩展,该扩展会为PostgreSQL插图加载 contrib模块

启用PostgreSQL hstore扩展

要为我们的PostgreSQL设计启用PostgreSQL hstore扩展,我们可以在 Organization 数据库中使用 CREATE EXTENSION 命令,如下所示: 可以在以下语句中看到:
CREATE EXTENSION hstore;
输出
执行上述命令后,我们将收到以下消息: hstore扩展已成功安装,且 创建扩展命令。
PostgreSQL hstore

PostgreSQL hstore示例数据类型

让我们看一个示例示例,以了解 PostgreSQL hstore数据类型的工作原理。
我们正在 创建一个新表作为 电影 hstore列,并在CREATE命令的帮助下并使用INSERT命令插入一些值。
电影 表包含诸如 Movie_id,Movie_name,Movie_attr 之类的各种列,并具有以下属性:
电影ID 是主键,用于查找电影。 电影名称是电影的其他名称 电影属性列用于包含电影的属性,例如,评分,电影类型,语言,放映时间和发行年份
对于 Movie_attr 列,我们使用了hstore 数据类型。
要创建 电影 表放入类似的 数据库,即组织,在其中启用hstore扩展,我们使用 CREATE 命令,如以下命令:
CREATE TABLE Movie (
    Movie_id serial primary key,
    Movie_name VARCHAR,
    Movie_Attr hstore
);
输出
在执行上述命令时,我们将收到以下消息,该消息显示 电影 表已成功创建。
PostgreSQL hstore
电影 em> 表创建成功,我们将在 INSERT 命令的帮助下向其中插入一些值。

将值插入PostgreSQL hstore列

要将值插入hstore列,我们使用 INSERT命令,如下面的语句:
INSERT INTO Movie (Movie_name, Movie_attr)
VALUES
(       'Avengers Endgame',
        '"rating" => "8.4",
       "movie_genres" => "Action/Sci-fi",
       "language" => "English",
       "release_year" => "2019",
        "running_time" => "181 Minutes"' 
),  
    (   'US',
        '"rating" => "6.9",
       "movie_genres" => "Horror/Thriller",
       "language"  => "English",
       "release_year" => "2019",
        "running_time"  => "116 Minutes"'
    ),
 (  'Dolittle',
        '"rating" => "5.6",
       "movie_genres" => "Adventure/Family ",
       "language" => "English",
       "release_year" => "2020",
        "running_time" => "101 Minutes"'
);
输出
执行上述命令后,我们将获得以下消息窗口,该窗口显示指定的值已成功插入 电影 表。
PostgreSQL hstore
注意: 正如我们在上面的插入命令中看到的那样,我们插入到hstore列中的值是一个逗号分隔键=>值对的列表。键和值都用双引号(")引起来。
电影 表中创建并插入值之后,我们将使用 SELECT 命令来从 Movie 表中检索所有数据:

从hstore列中选择值

选择值从 hstore列中进行的操作等于在 SELECT的帮助下从具有本机数据类型的列中选择一个值命令,如下所示:
Select * 
FROM Movie;
输出
成功执行上述命令后,我们将获得以下输出,其中显示了 电影 中存在的所有数据 表:
PostgreSQL hstore

选择特定数据key

PostgreSQL hstore数据类型允许我们使用 -> 运算符从 hstore列(Movie_Attr)中选择特定密钥的数据值。
在下面的示例中,我们使用 -> 运算符来标识 电影 表,如以下命令所示:
SELECT
Movie_attr-> 'running_time' AS Time_duration
FROM
Movie;
输出
执行上述命令后,我们将获得以下输出,该命令显示 中每部电影的 running_time >电影 表。
PostgreSQL hstore

使用在WHERE子句中hstore数据值

要过滤 hstore列的值与 输入值匹配的行。因此,在这种情况下,我们可以在 位置中使用 ->运算符 strong>子句。
让我们看一个示例示例,以使我们更好地理解:
在下面的示例中,我们试图获取该电影的 Movie_name Movie_genres ,其 Relases_year 值与2019年匹配:
SELECT
Movie_name, Movie_attr-> 'movie_genres' AS Genres
FROM Movie
WHERE Movie_attr-> 'release_year' = '2019';
输出
执行上述命令后,我们将使用 WHERE子句获取 hstore列的值在输出中,如下所示:
PostgreSQL hstore

检索所有值从hstore列

要从hstore列检索所有数据值,我们可以在数组中使用 avals()函数
在下面例如,我们借助于 avals()函数从 电影 表的hstore列中获取所有值:
SELECT avals (Movie_attr)
FROM Movie;
输出
执行上述命令后,我们将获得以下输出,其中显示 Moive_attr 中所有可用的值>电影表:
PostgreSQL hstore
OR
如果要按组检索输出,可以使用 svals()函数。
在以下命令中,我们使用 svals()函数,而不是 avals()来获得一组输出:
SELECT svals (Movie_attr)
FROM Movie;
输出
在执行上述命令时,我们将获得以下输出:
PostgreSQL hstore

从hstore列中检索所有键

从hstore列中获取所有值,就像我们可以使用 avals()和svals()函数,我们可以使用 akeys()函数从hstore列中检索所有键:
SELECT akeys (Movie_attr)
FROM Movie;
输出
在执行上述命令时,我们将获得以下输出,其中显示了 的所有 key 电影表中的Movie_attr 列:
PostgreSQL hstore
OR
如果我们希望PostgreSQL以集合的形式检索输出,则可以使用 skey()函数
在以下命令中,我们使用 skey()函数而不是 akeys()将输出作为一个集合:
SELECT skeys (Movie_attr)
FROM Movie;
输出
执行上述命令后,我们将得到以下输出为一组:
PostgreSQL hstore

Modi将hstore数据设置为集合

我们可以使用 EACH()函数将hstore数据修改为集合,如以下命令所示:
SELECT Movie_name, 
(EACH(Movie_attr)).* 
FROM Movie;
输出
成功执行上述命令后,我们将获得以下输出,该命令将修改后的hstore数据显示为集合:
PostgreSQL hstore

将hstore数据修改为JSON

要将hstore数据更改为 JSON ,PostgreSQL提供了 hstore_to_json()函数。
在以下命令中,我们使用 hstore_to_json()函数进行转换 hstore 数据值到 json :
SELECT Movie_name, 
hstore_to_json (Movie_attr) json
FROM Movie;
输出
执行上述命令后,我们将获得以下结果,这表明我们已成功将hstore数据修改为json:
PostgreSQL hstore

将键值对添加到当前行

我们可以添加使用hstore列将新的键值对添加到当前行。
例如,我们可以将 Country 键添加到 Movie_attr我们在以下命令中看到的 Movie 表的列:
UPDATE Movie
SET Movie_attr = Movie_attr || '"Country"=>"United States"':: hstore;
输出
执行上述命令后,我们将得到以下结果,表明三列已成功更新。
PostgreSQL hstore
现在,如果我们想看到 " Country" =>" United States" 值已成功更新。
SELECT Movie_name,
Movie_attr-> 'Country' AS Country
FROM Movie;
输出
在执行上述命令时,我们将获得以下结果,该命令显示 Country (国家/地区) Movie_attr 美国已更新为指定值。
PostgreSQL hstore

更新当前键值对

我们可以在 UPDATE 命令的帮助下更新 当前键值对
例如: 在下面的命令中,我们将"国家"键的值更新为"美国"。
UPDATE Movie
SET Movie_attr = Movie_attr || '"Country"=> "USA"' ::hstore;
输出
执行上述命令后,我们将获得以下消息窗口,该窗口显示值已成功更新。
PostgreSQL hstore

删除当前键值对

PostgreSQL为我们提供了删除hstore列中的当前键值对。
让我们看一个示例示例,以使我们更好地理解:
在以下命令中,我们将删除 "国家/地区" 电影属性列中的=>"美国"键值对。
UPDATE Movie
SET Movie_attr = delete(Movie_attr, 'Country');
输出
执行上述命令后,我们将获得以下消息窗口,其中显示指定值已成功更新。
PostgreSQL hstore

检查hstore列中的显式键

运算符用于检查 WHERE 子句中 hstore列中的显式键。
在以下示例中,下面的命令使用 Movie_attr 检索所有行,其中包含键 Movie _genres
SELECT Movie_name, 
Movie_attr->'movie_genres' as genres,
Movie_attr
FROM Movie
WHERE Movie_attr ? 'movie_genres';
输出
执行上述命令将得到以下结果,该命令在hstore列中显示指定的密钥。
PostgreSQL hstore

检查键值对

我们可以使用 @ >运算符来选择hstore键值对。
让我们看一个示例来了解 @>运算符的用法:
以下命令用于从 Movie_attr 列返回包含键值对的所有行,并且还匹配 " Language" =>" English"
SELECT Movie_name
FROM Movie
WHERE Movie_attr @> '"language"=>"English"' :: hstore;
输出
成功执行以上命令后,我们将得到以下结果,表示hstore键值对。
PostgreSQL hstore

选择具有各种指定键的行

?&运算符用于选择其hstore列具有各种键的行。
在以下示例中,我们可以获得 Movie ,其中 Movie_attr 列包含 running_time rating 键:
SELECT Movie_name
FROM Movie
WHERE 
Movie_attr ?& ARRAY [ 'running_time', 'rating' ];
输出
执行上述命令后,我们将获得以下输出:
PostgreSQL hstore
注意: 我们还可以使用?|在?&运算符位置的操作符,以检查其hstore列中的行是否包含键列表中的任何键。
在以下命令中,我们使用 ?| 运算符而不是 ?&来获取其 hstore列的行包含键列表中的任何键:
SELECT Movie_name
FROM Movie
WHERE 
Movie_attr ?| ARRAY [ 'running_time', 'rating' ];
输出
执行上述命令后,与 ?&运算符的输出相比,我们将得到类似的结果:
PostgreSQL hstore

概述

PostgreSQL hstore中数据类型部分中最有用的操作,我们可以针对hstore数据类型执行操作。
我们已经学习了以下主题:
PostgreSQL的hstore数据类型用于将键-值对存储为单位值。 我们使用 Create Extension 启用了PostgreSQL hstore 借助->运算符,我们可以选择特定值的数据。 我们在位置中使用了 hstore数据类型 我们还可以使用 avals()函数从hstore列中检索值。 要获取输出为一组,我们可以使用 svals()函数 我们还可以借助 akeys() 从hstore值中返回所有密钥。 并且要返回输出为一组,我们可以使用 skeys()函数 我们已使用 EACH()函数将hstore数据修改为集合。 在PostgreSQL的hstore数据类型部分中,我们还可以使用 hstore_to_json()函数 将hstore数据更改为json 我们还可以添加,更新,删除 PostgreSQL hstore数据类型中的键-值对 我们还讨论了以下运算符,例如?((用于检查hstore列中的显式键),@>(用于检查键值对),?&和?|(选择其hstore列中的行有各种键)。
昵称: 邮箱:
Copyright © 2022 立地货 All Rights Reserved.
备案号:京ICP备14037608号-4