PostgreSQL 配列: 関数、型、例

⚡ スマートサマリー

PostgreSQL Arrayを使用すると、テーブル列を任意の有効なデータ型の配列として定義できます。配列列の作成、ARRAYコンストラクタまたは波括弧を使用した値の挿入、要素のクエリと変更、ANY()を使用した検索などが可能です。

  • 📦 定義: 任意 PostgreSQL データ型には、integer[] のような対応する配列型があります。
  • 🧱 作成と挿入: TEXT[]列とARRAYコンストラクタまたは中括弧を使用してください。
  • 🔎 クエリ: 添え字を使って要素にアクセスします。最初の要素は位置1にあります。
  • 会<XNUMXxEXNUMX><XNUMXxXNUMXF>️️<XNUMXxXNUMXF>️️ 変更と検索: ANY() を使用して、個々の要素と検索値を更新します。
  • 展開: unnest() 関数は、配列の値を個別の行に分割します。

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 配列値

3列目、つまり連絡先の値は配列として挿入されています。これは、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句を組み合わせて使用​​することで、配列列に基づいて行をフィルタリングできます。たとえば、2番目の連絡先が(408)-567-78234である従業員を表示するには、次のコマンドを実行します。

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 配列

配列の展開

配列の値を行に分割することができます。このプロセスは配列の拡張と呼ばれます。従業員テーブルの例では、連絡先配列に2つの連絡先を持つ従業員がいます。これらを別々の行に分割することができます。 PostgreSQL この目的に使用できる unnest() 関数を提供します。例:

SELECT
   name,
   unnest(contact)
FROM
   Employees;

次のように返されます。

配列の展開

従業員のAlice JohnとJames Bushはそれぞれ2件の連絡先を持っています。これらを別々の行に分けることができます。

pgAdminの使用

作成 PostgreSQL 配列

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

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

ステップ2)

  1. 左側のナビゲーション バーで、[データベース] をクリックします。
  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) クエリで波括弧を使用するには、クエリ エディタに次のクエリを入力します。

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

次に、「実行」ボタンをクリックします。

挿入する PostgreSQL 配列値

配列データのクエリ

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

SELECT * FROM Employees;

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

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

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

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

ステップ3) 従業員の最初の連絡先を確認するには、クエリ エディタに次のクエリを入力し、「実行」ボタンをクリックします。

SELECT name, contact[1]
FROM Employees;

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

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

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

ステップ4) SELECT文とWHERE句を組み合わせるには、クエリ エディターに次のコマンドを入力し、[実行]ボタンをクリックします。

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

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

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

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

変更 PostgreSQL 配列

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

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

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

変更 PostgreSQL pgAdminを使用した配列

ステップ3) 変更が成功したかどうかを確認するには、クエリ エディターに次のコマンドを入力し、[実行] ボタンをクリックしてください。

SELECT * FROM Employees;

変更 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 を使用した配列の展開

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

よくあるご質問

はい。AIアシスタントは、配列列を含むCREATE TABLE文、ARRAYまたは波括弧を使用したINSERTコマンド、unnest()やANY()などの関数を作成できます。生成されたSQLを実行する前に、スキーマでテストしてください。

はい。AIツールを使えば、配列列と正規化された子テーブルのどちらがデータに適しているかを判断できます。配列は小規模で固定されたリストに適していますが、個別のテーブルは大規模なリレーションシップや頻繁にクエリされるリレーションシップに適しています。クエリパターンで検証してみてください。

array_length(配列, 次元) 関数を使用してください。例えば、array_length(contact, 1) は、contact 配列の第一次元の要素数を返します。

はい。array_append(array, value) 関数または連結演算子 || を使用してください。たとえば、UPDATE Employees SET contact = array_append(contact, '(408)-000-0000') は新しい要素を追加します。