PostgreSQL Array: Funktionen, Typ, Beispiel
⚡ Intelligente Zusammenfassung
PostgreSQL Mit Array können Sie eine Tabellenspalte als Array beliebiger gültiger Datentypen definieren. Es umfasst das Erstellen von Array-Spalten, das Einfügen von Werten mit dem ARRAY-Konstruktor oder geschweiften Klammern, das Abfragen und Ändern von Elementen sowie das Suchen mit ANY().

Was ist PostgreSQL Array?
In PostgreSQLWir können eine Spalte als Array gültiger Datentypen definieren. Der Datentyp kann vordefiniert, benutzerdefiniert oder ein Aufzählungstyp sein. Darüber hinaus spielen Arrays eine wichtige Rolle in PostgreSQL.
Jede entsprechende PostgreSQL Jedem Datentyp ist ein entsprechender Array-Typ zugeordnet. Beispielsweise hat der Datentyp Integer den Array-Typ Integer[], der Datentyp Character den Array-Typ Character[] usw.
Bessere PostgreSQL Arrays
Im folgenden Beispiel erstellen wir eine Tabelle mit dem Namen „Employees“, wobei die Spalte „Kontakt“ als Text-Array definiert ist:
CREATE TABLE Employees ( id int PRIMARY KEY, name VARCHAR (100), contact TEXT [] );
Der Befehl sollte erfolgreich ausgeführt werden.
Einsetzen PostgreSQL Array-Werte
Lass uns jetzt einfügen Werte in die obige Tabelle eintragen:
INSERT INTO Employees VALUES ( 1, 'Alice John', ARRAY [ '(408)-743-9045', '(408)-567-7834' ] );
Die Einfügung sollte erfolgreich verlaufen.
Die Werte der dritten Spalte, also „Kontakt“, wurden als Array eingefügt. Dies wurde mithilfe des ARRAY-Konstruktors erreicht. In diesem Beispiel sind sie in eckige Klammern [] eingeschlossen. Wir haben zwei Kontakte für die Mitarbeiterin Alice John.
Es ist uns weiterhin möglich, geschweifte Klammern {} zu verwenden, wie unten gezeigt:
INSERT INTO Employees VALUES ( 2, 'Kate Joel', '{"(408)-783-5731"}' ), ( 3, 'James Bush', '{"(408)-745-8965","(408)-567-78234"}' );
Der Befehl sollte erfolgreich ausgeführt werden.
Die obigen Anweisungen fügen zwei Zeilen in die Tabelle „Employees“ ein. Bei Verwendung von geschweiften Klammern wird das Array in einfache Anführungszeichen (') eingeschlossen, während die Textarrayelemente in doppelte Anführungszeichen (“) eingeschlossen werden.
Array-Daten abfragen
Um die Elemente eines Arrays abzufragen, verwenden wir die SELECT-Anweisung. Um den Inhalt unserer Tabelle „Employees“ anzuzeigen, führen wir folgenden Befehl aus:
SELECT * FROM Employees;
Dies gibt Folgendes zurück:
Die Elemente der Array-Spalte „Kontakt“ sind in geschweifte Klammern {} eingeschlossen. Um auf die Array-Elemente selbst zuzugreifen, verwenden wir einen Index in eckigen Klammern []. Das erste Element eines Arrays befindet sich an Position 1.
Wir benötigen beispielsweise die Namen der Mitarbeiter und, falls ein Mitarbeiter mehrere Ansprechpartner hat, nur deren ersten Ansprechpartner. Diesen können wir über contact[1] abrufen. Schauen wir uns das an:
SELECT name, contact[1] FROM Employees;
Dies gibt Folgendes zurück:
Wir können die SELECT-Anweisung zusammen mit der WHERE-Klausel verwenden, um Zeilen anhand der Array-Spalte zu filtern. Um beispielsweise den Mitarbeiter mit (408)-567-78234 als zweitem Kontakt anzuzeigen, können wir folgenden Befehl ausführen:
SELECT name FROM Employees WHERE contact [ 2 ] = '(408)-567-78234';
Dies gibt Folgendes zurück:
Ändern PostgreSQL Feld
Sie können alle oder nur ein einzelnes Element eines Arrays aktualisieren. Hier ist der Inhalt der Tabelle „Mitarbeiter“:
Aktualisieren wir die zweite Telefonnummer des Mitarbeiters James Bush, dessen ID 3 ist:
Führen Sie den folgenden Befehl aus:
UPDATE Employees SET contact [ 2 ] = '(408)-589-89347' WHERE id = 3;
Der Befehl sollte erfolgreich ausgeführt werden:
Lassen Sie uns die Tabelle abfragen, um zu überprüfen, ob die Änderung erfolgreich war:
Der Wechsel war erfolgreich.
Suche in einem PostgreSQL Feld
Derzeit sieht unsere Mitarbeitertabelle wie folgt aus:
Angenommen, wir müssen wissen, wem der Kontakt (408)-783-5731 gehört, unabhängig von seiner Position im Kontakt-Array. Wir können die Funktion ANY() wie unten gezeigt verwenden:
SELECT name, contact FROM Employees WHERE '(408)-783-5731' = ANY (contact);
Dies gibt Folgendes zurück:
Arrays erweitern
Wir können die Werte eines Arrays in Zeilen aufteilen. Dieser Vorgang wird als Array-Expansion bezeichnet. Im Beispiel der Tabelle „Mitarbeiter“ gibt es einige Mitarbeiter mit zwei Kontakten im Kontakt-Array. Diese können wir in separate Zeilen aufteilen. PostgreSQL stellt die Funktion `unnest()` bereit, die hierfür verwendet werden kann. Zum Beispiel:
SELECT name, unnest(contact) FROM Employees;
Dies gibt Folgendes zurück:
Die Mitarbeiter Alice John und James Bush haben jeweils zwei Kontakte. Diese können wir in separate Zeilen aufteilen.
Verwenden von pgAdmin
Bessere PostgreSQL Arrays
Um dasselbe über pgAdmin zu erreichen, gehen Sie wie folgt vor:
Schritt 1) Melden Sie sich bei Ihrem pgAdmin-Konto an.
Schritt 2)
- Klicken Sie in der Navigationsleiste links auf Datenbanken.
- Klicken Sie auf die Schaltfläche „Demo“.
Schritt 3) Geben Sie die Abfrage in den Abfrageeditor ein, um die Tabelle „Employees“ zu erstellen:
CREATE TABLE Employees ( id int PRIMARY KEY, name VARCHAR (100), contact TEXT [] );
Schritt 4) Klicken Sie auf die Schaltfläche „Ausführen“.
Einsetzen PostgreSQL Array-Werte
Schritt 1) Geben Sie die folgende Abfrage in den Abfrage-Editor ein:
INSERT INTO Employees VALUES ( 1, 'Alice John', ARRAY [ '(408)-743-9045', '(408)-567-7834' ] );
Schritt 2) Klicken Sie auf die Schaltfläche „Ausführen“:
Schritt 3) Um geschweifte Klammern in der Abfrage zu verwenden, geben Sie die folgende Abfrage im Abfrageeditor ein:
INSERT INTO Employees VALUES ( 2, 'Kate Joel', '{"(408)-783-5731"}' ), ( 3, 'James Bush', '{"(408)-745-8965","(408)-567-78234"}' );
Klicken Sie anschließend auf die Schaltfläche „Ausführen“:
Array-Daten abfragen
Schritt 1) Um den Inhalt der Tabelle „Employees“ anzuzeigen, geben Sie die folgende Abfrage im Abfrageeditor ein:
SELECT * FROM Employees;
Schritt 2) Klicken Sie auf die Schaltfläche „Ausführen“:
Es sollte Folgendes zurückgeben:
Schritt 3) Um die ersten Kontakte von Mitarbeitern anzuzeigen, geben Sie die folgende Abfrage in den Abfrageeditor ein und klicken Sie auf die Schaltfläche „Ausführen“:
SELECT name, contact[1] FROM Employees;
Es sollte Folgendes zurückgeben:
Schritt 4) Um die SELECT-Anweisung mit der WHERE-Klausel zu kombinieren, geben Sie den folgenden Befehl im Abfrageeditor ein und klicken Sie auf die Schaltfläche „Ausführen“:
SELECT name FROM Employees WHERE contact [ 2 ] = '(408)-567-78234';
Es sollte Folgendes zurückgeben:
Ändern PostgreSQL Feld
Schritt 1) Um den zweiten Kontakt des Benutzers mit der ID 3 zu aktualisieren, führen Sie folgenden Befehl aus:
UPDATE Employees SET contact [ 2 ] = '(408)-589-89347' WHERE id = 3;
Schritt 2) Klicken Sie auf die Schaltfläche „Ausführen“.
Schritt 3) Geben Sie im Abfrageeditor den folgenden Befehl ein, um zu überprüfen, ob die Änderung erfolgreich war, und klicken Sie dann auf die Schaltfläche „Ausführen“:
SELECT * FROM Employees;
Es sollte Folgendes zurückgeben:
Suche in einem PostgreSQL Feld
Schritt 1) Geben Sie die folgende Abfrage in den Abfrage-Editor ein:
SELECT name, contact FROM Employees WHERE '(408)-783-5731' = ANY (contact);
Schritt 2) Klicken Sie auf die Schaltfläche „Ausführen“.
Es sollte Folgendes zurückgeben:
Arrays erweitern
Schritt 1) Geben Sie die folgende Abfrage in den Abfrage-Editor ein:
SELECT name, unnest(contact) FROM Employees;
Schritt 2) Klicken Sie auf die Schaltfläche „Ausführen“.
Es sollte Folgendes zurückgeben:
Laden Sie die in diesem Tutorial verwendete Datenbank herunter






























