PostgreSQL 配列: 関数、型、例

何ですか PostgreSQL 配列?

In PostgreSQL、列を有効なデータ型の配列として定義できます。データ型は、組み込み型、ユーザー定義型、または列挙型のいずれかになります。これ以外にも、配列は重要な役割を果たします。 PostgreSQL.

対応するすべての PostgreSQL データ型には、関連する配列型が付属します。たとえば、整数データ型には integer[] 配列型があり、文字データ型にはcharacter[] 配列型があります。

作成 PostgreSQL 配列

次の例では、連絡先列がテキスト配列として定義された Employees という名前のテーブルを作成します。

CREATE TABLE Employees (
   id int PRIMARY KEY,
   name VARCHAR (100),
   contact TEXT []
);

コマンドは正常に実行されるはずです。

作成 PostgreSQL 配列

挿入する PostgreSQL 配列値

今すぐしましょう insert 値を上の表に代入します。

INSERT INTO Employees 
VALUES
   (
      1,
      'Alice John',
      ARRAY [ '(408)-743-9045',
      '(408)-567-7834' ]
   );

挿入は正常に実行されるはずです。

挿入する PostgreSQL 配列値

XNUMX 列目の値、つまり contact は配列として挿入されています。 これは、ARRAY コンストラクターを使用して実現されています。

この例では、それらを角括弧 [] で囲んでいます。従業員 Alice John には 2 つの連絡先があります。

以下に示すように、中括弧 {} を使用することも可能です。

INSERT INTO Employees 
VALUES
   (
    2,
      'Kate Joel',
      '{"(408)-783-5731"}'
   ),
   ( 
      3,
      'James Bush',
      '{"(408)-745-8965","(408)-567-78234"}'
   );

コマンドは正常に実行されるはずです。

挿入する PostgreSQL 配列値

上記のステートメントは、Employees テーブルに 2 つの行を挿入します。中括弧を使用する場合、配列は一重引用符 (') で囲まれ、テキスト配列項目は二重引用符 (“) で囲まれます。

配列データのクエリ

配列の要素をクエリするには、SELECT ステートメントを使用します。

Employees テーブルの内容を表示するには、次のコマンドを実行します。

SELECT * FROM Employees;

これにより、次が返されます。

配列データのクエリ

配列列の要素、つまり contact は中括弧 {} で囲まれています。

配列要素自体にアクセスするには、角括弧 [] 内に添字を追加します。配列の最初の要素は位置 1 にあります。

たとえば、従業員の名前と、複数の連絡先を持つ従業員の最初の連絡先のみを取得する必要があります。 これには contact[1] としてアクセスできます。

これを見てみましょう:

SELECT name, contact[1]
FROM Employees;

次のように返されます。

配列データのクエリ

SELECT ステートメントを WHERE 句と組み合わせて使用​​すると、配列の列に基づいて行をフィルターできます。

たとえば、408 番目の連絡先が (567)-78234-XNUMX である従業員を確認するには、次のコマンドを実行します。

SELECT
   name
FROM
   Employees
WHERE
   contact [ 2 ] = '(408)-567-78234';

次のように返されます。

配列データのクエリ

変更 PostgreSQL 配列

配列のすべての要素または単一の要素を更新できます。

Employees テーブルの内容は次のとおりです。

変更 PostgreSQL 配列

従業員 James Bush の 3 番目の電話番号 (ID は XNUMX) を更新してみましょう。

変更 PostgreSQL 配列

次のコマンドを実行します。

UPDATE Employees
SET contact [ 2 ] = '(408)-589-89347'
WHERE
   id = 3;

コマンドは正常に実行されるはずです。

変更 PostgreSQL 配列

テーブルにクエリを実行して、変更が成功したかどうかを確認してみましょう。

変更 PostgreSQL 配列

変更は成功しました。

検索 PostgreSQL 配列

現在、従業員テーブルは次のとおりです。

検索 PostgreSQL 配列

連絡先配列内の位置に関係なく、連絡先 (408)-783-5731 の所有者を知る必要があるとします。以下に示すように ANY() 関数を使用できます。

SELECT
   name,
   contact
FROM
   Employees
WHERE
   '(408)-783-5731' = ANY (contact);

次のように返されます。

検索 PostgreSQL 配列

配列の展開

配列の値を行に分割できます。 このプロセスは配列拡張として知られています。

Employees テーブルの例では、連絡先配列に XNUMX つの連絡先を持つ従業員がいます。 これらを別々の行に分割できます。

PostgreSQL これに使用できる unnest() 関数を提供します。

例:

SELECT
   name,
   unnest(contact)
FROM
   Employees;

次のように返されます。

配列の展開

従業員のアリス ジョンとジェームス ブッシュには XNUMX つの連絡先があります。 別々の行に分割できます。

pgAdminの使用

作成 PostgreSQL 配列

pgAdmin を使用して同じことを実行するには、次の手順を実行します。

ステップ1) pgAdmin アカウントにログインします。

ステップ2)

  1. 左側のナビゲーション バーから [rbases] をクリックします。
  2. 「デモ」ボタンをクリックします

作成 PostgreSQL pgAdminを使用した配列

ステップ3) クエリ エディターにクエリを入力して、Employees テーブルを作成します。

CREATE TABLE Employees (
   id int PRIMARY KEY,
   name VARCHAR (100),
   contact TEXT []
);

ステップ4) 「実行」ボタンをクリックします。

作成 PostgreSQL pgAdminを使用した配列

挿入する PostgreSQL 配列値

ステップ1) クエリ エディターに次のクエリを入力します。

INSERT INTO Employees 
VALUES
   (
      1,
      'Alice John',
      ARRAY [ '(408)-743-9045',
      '(408)-567-7834' ]
   );

ステップ2) 「実行」ボタンをクリックします。

挿入する PostgreSQL 配列値

ステップ3)

クエリで中括弧を使用するには

ステップ1) クエリ エディターに次のクエリを入力します。

INSERT INTO Employees 
VALUES
   (
    2,
      'Kate Joel',
      '{"(408)-783-5731"}'
   ),
   ( 
      3,
      'James Bush',
      '{"(408)-745-8965","(408)-567-78234"}'
   );

ステップ 2) 「実行」ボタンをクリックします。

挿入する PostgreSQL 配列値

配列データのクエリ

ステップ1) Employees テーブルの内容を表示するには、クエリ エディターで次のクエリを入力します。

SELECT * FROM Employees;

ステップ2) 「実行」ボタンをクリックします。

pgAdmin を使用した配列データのクエリ

次のような結果が返されます。

pgAdmin を使用した配列データのクエリ

ステップ3) 従業員の最初の連絡先を確認するには:

  1. クエリ エディターに次のクエリを入力します。
    SELECT name, contact[1]
    FROM Employees;
    
  2. 「実行」ボタンをクリックします。

pgAdmin を使用した配列データのクエリ

次のような結果が返されます。

pgAdmin を使用した配列データのクエリ

ステップ4) SELECT ステートメントと WHERE 句を組み合わせるには、次のようにします。

  1. クエリ エディターで次のコマンドを入力します。
    SELECT
       name
    FROM
       Employees
    WHERE
       contact [ 2 ] = '(408)-567-78234';
    
  2. 「実行」ボタンをクリックします。

pgAdmin を使用した配列データのクエリ

次のような結果が返されます。

pgAdmin を使用した配列データのクエリ

変更 PostgreSQL 配列

ステップ1) ID が 3 のユーザーの XNUMX 番目の連絡先を更新するには、次のコマンドを実行します。

UPDATE Employees
SET contact [ 2 ] = '(408)-589-89347'
WHERE
   id = 3;

ステップ2) 「実行」ボタンをクリックします。

変更 PostgreSQL pgAdminを使用した配列

ステップ3)

1. クエリ エディターで次のコマンドを入力して、変更が成功したかどうかを確認します。

SELECT * FROM Employees;

2.「実行」ボタンをクリックします。

変更 PostgreSQL pgAdminを使用した配列

次のような結果が返されます。

変更 PostgreSQL pgAdminを使用した配列

検索 PostgreSQL 配列

ステップ1) クエリ エディターに次のクエリを入力します。

SELECT
   name,
   contact
FROM
   Employees
WHERE
   '(408)-783-5731' = ANY (contact);

ステップ2) 「実行」ボタンをクリックします。

検索 PostgreSQL pgAdminを使用した配列

次のような結果が返されます。

検索 PostgreSQL pgAdminを使用した配列

配列の展開

ステップ1) クエリ エディターに次のクエリを入力します。

SELECT
   name,
   unnest(contact)
FROM
   Employees;

ステップ2) 「実行」ボタンをクリックします。

pgAdmin を使用した配列の展開

次のような結果が返されます。

pgAdmin を使用した配列の展開

まとめ

  • PostgreSQL テーブルの列を配列型として定義できるようになります。
  • 配列は有効なものでなければなりません データ・タイプ 整数、文字、ユーザー定義型など。
  • 配列の列に値を挿入するには、ARRAY コンストラクターを使用します。
  • 配列列の同じ行に複数の要素がある場合、最初の要素は位置 1 になります。
  • 各値には、角括弧 [] 内の添字を渡すことでアクセスできます。
  • 配列の要素は、SELECT ステートメントを使用して取得できます。
  • 配列列の値は、角括弧 [] または中括弧 {} で囲むことができます。
  • ANY() 関数を使用して配列の列値を検索できます。

このチュートリアルで使用するデータベースをダウンロードする