PostgreSQL 配列: 関数、型、例
何ですか PostgreSQL 配列?
In PostgreSQL、列を有効なデータ型の配列として定義できます。データ型は、組み込み型、ユーザー定義型、または列挙型のいずれかになります。これ以外にも、配列は重要な役割を果たします。 PostgreSQL.
対応するすべての PostgreSQL データ型には、関連する配列型が付属します。たとえば、整数データ型には integer[] 配列型があり、文字データ型にはcharacter[] 配列型があります。
作成 PostgreSQL 配列
次の例では、連絡先列がテキスト配列として定義された Employees という名前のテーブルを作成します。
CREATE TABLE Employees ( id int PRIMARY KEY, name VARCHAR (100), contact TEXT [] );
コマンドは正常に実行されるはずです。
挿入する PostgreSQL 配列値
今すぐしましょう insert 値を上の表に代入します。
INSERT INTO Employees VALUES ( 1, 'Alice John', ARRAY [ '(408)-743-9045', '(408)-567-7834' ] );
挿入は正常に実行されるはずです。
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"}' );
コマンドは正常に実行されるはずです。
上記のステートメントは、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 テーブルの内容は次のとおりです。
従業員 James Bush の 3 番目の電話番号 (ID は XNUMX) を更新してみましょう。
次のコマンドを実行します。
UPDATE Employees SET contact [ 2 ] = '(408)-589-89347' WHERE id = 3;
コマンドは正常に実行されるはずです。
テーブルにクエリを実行して、変更が成功したかどうかを確認してみましょう。
変更は成功しました。
検索 PostgreSQL 配列
現在、従業員テーブルは次のとおりです。
連絡先配列内の位置に関係なく、連絡先 (408)-783-5731 の所有者を知る必要があるとします。以下に示すように ANY() 関数を使用できます。
SELECT name, contact FROM Employees WHERE '(408)-783-5731' = ANY (contact);
次のように返されます。
配列の展開
配列の値を行に分割できます。 このプロセスは配列拡張として知られています。
Employees テーブルの例では、連絡先配列に XNUMX つの連絡先を持つ従業員がいます。 これらを別々の行に分割できます。
PostgreSQL これに使用できる unnest() 関数を提供します。
例:
SELECT name, unnest(contact) FROM Employees;
次のように返されます。
従業員のアリス ジョンとジェームス ブッシュには XNUMX つの連絡先があります。 別々の行に分割できます。
pgAdminの使用
作成 PostgreSQL 配列
pgAdmin を使用して同じことを実行するには、次の手順を実行します。
ステップ1) pgAdmin アカウントにログインします。
ステップ2)
- 左側のナビゲーション バーから [rbases] をクリックします。
- 「デモ」ボタンをクリックします
ステップ3) クエリ エディターにクエリを入力して、Employees テーブルを作成します。
CREATE TABLE Employees ( id int PRIMARY KEY, name VARCHAR (100), contact TEXT [] );
ステップ4) 「実行」ボタンをクリックします。
挿入する PostgreSQL 配列値
ステップ1) クエリ エディターに次のクエリを入力します。
INSERT INTO Employees VALUES ( 1, 'Alice John', ARRAY [ '(408)-743-9045', '(408)-567-7834' ] );
ステップ2) 「実行」ボタンをクリックします。
ステップ3)
クエリで中括弧を使用するには
ステップ1) クエリ エディターに次のクエリを入力します。
INSERT INTO Employees VALUES ( 2, 'Kate Joel', '{"(408)-783-5731"}' ), ( 3, 'James Bush', '{"(408)-745-8965","(408)-567-78234"}' );
ステップ 2) 「実行」ボタンをクリックします。
配列データのクエリ
ステップ1) Employees テーブルの内容を表示するには、クエリ エディターで次のクエリを入力します。
SELECT * FROM Employees;
ステップ2) 「実行」ボタンをクリックします。
次のような結果が返されます。
ステップ3) 従業員の最初の連絡先を確認するには:
- クエリ エディターに次のクエリを入力します。
SELECT name, contact[1] FROM Employees;
- 「実行」ボタンをクリックします。
次のような結果が返されます。
ステップ4) SELECT ステートメントと WHERE 句を組み合わせるには、次のようにします。
- クエリ エディターで次のコマンドを入力します。
SELECT name FROM Employees WHERE contact [ 2 ] = '(408)-567-78234';
- 「実行」ボタンをクリックします。
次のような結果が返されます。
変更 PostgreSQL 配列
ステップ1) ID が 3 のユーザーの XNUMX 番目の連絡先を更新するには、次のコマンドを実行します。
UPDATE Employees SET contact [ 2 ] = '(408)-589-89347' WHERE id = 3;
ステップ2) 「実行」ボタンをクリックします。
ステップ3)
1. クエリ エディターで次のコマンドを入力して、変更が成功したかどうかを確認します。
SELECT * FROM Employees;
2.「実行」ボタンをクリックします。
次のような結果が返されます。
検索 PostgreSQL 配列
ステップ1) クエリ エディターに次のクエリを入力します。
SELECT name, contact FROM Employees WHERE '(408)-783-5731' = ANY (contact);
ステップ2) 「実行」ボタンをクリックします。
次のような結果が返されます。
配列の展開
ステップ1) クエリ エディターに次のクエリを入力します。
SELECT name, unnest(contact) FROM Employees;
ステップ2) 「実行」ボタンをクリックします。
次のような結果が返されます。
まとめ
- PostgreSQL テーブルの列を配列型として定義できるようになります。
- 配列は有効なものでなければなりません データ・タイプ 整数、文字、ユーザー定義型など。
- 配列の列に値を挿入するには、ARRAY コンストラクターを使用します。
- 配列列の同じ行に複数の要素がある場合、最初の要素は位置 1 になります。
- 各値には、角括弧 [] 内の添字を渡すことでアクセスできます。
- 配列の要素は、SELECT ステートメントを使用して取得できます。
- 配列列の値は、角括弧 [] または中括弧 {} で囲むことができます。
- ANY() 関数を使用して配列の列値を検索できます。