PostgreSQL hstore类型

在本节中,我们将了解PostgreSQL hstore 数据类型的工作原理,hstore 数据类型的示例,我们还将看到hstore with WHERE子句的示例,这有助于我们更灵活地处理hstore 数据值。

我们将了解如何添加、更新、删除PostgreSQL hstore 数据类型中的键值对。

我们将讨论以下运算符,例如-> 运算符(为特定值选择数据),?运算符(检查 hstore 列中的显式键)、@> 运算符(检查键值对)、?& 和 ?|Operator(选择其 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 扩展,我们可以在组织数据库中使用CREATE EXTENSION命令,如下面的语句所示:

CREATE EXTENSION hstore;  

执行上述命令后,我们将收到以下消息:已使用创建扩展命令成功安装hstore 扩展。

PostgreSQL hstore 数据类型示例

让我们看一个示例来了解PostgreSQL hstore 数据类型的工作原理。

我们正在使用 CREATE 命令的帮助创建一个新表作为Movie和hstore 列,并使用 INSERT 命令插入一些值。

Movie表包含各种列,例如Movie_id、Movie_name、Movie_attr,并且具有以下属性:

  • Movie_id是主键,用于查找电影。
  • Movie_name是电影的别名
  • Movie_attr列用于包含电影的属性,例如rating、movie_genres、language、running_time 和 release year。

对于Movie_attr列,我们使用了 hstore数据类型。

要将Movie表创建到类似的数据库 Organization 中,我们在其中启用 hstore 扩展,我们使用CREATE命令,正如我们在以下命令中看到的那样:

CREATE TABLE Movie (  
    Movie_id serial primary key,  
    Movie_name VARCHAR,  
    Movie_Attr hstore  
);  

执行上面的命令,我们会得到如下信息,显示电影表已经创建成功。

成功创建Movie表后,我们将在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"'  
);  

执行上述命令后,我们将得到如下消息窗口,显示指定的值已成功插入到Movie表中。

热门文章

优秀文章