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().

  • 📦 Definition: Jedes PostgreSQL Der Datentyp hat einen passenden Array-Typ, wie zum Beispiel integer[].
  • 🧱 Erstellen und Einfügen: Verwenden Sie TEXT[]-Spalten und den ARRAY-Konstruktor oder geschweifte Klammern.
  • 🔎 Abfrage: Zugriff auf Elemente erfolgt über Indizes; das erste Element befindet sich an Position 1.
  • Ändern und Suchen: Einzelne Elemente aktualisieren und Werte mit ANY() suchen.
  • Erweitern: Die Funktion unnest() teilt Array-Werte in separate Zeilen auf.

PostgreSQL Feld

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.

Bessere  PostgreSQL Arrays

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.

Einsetzen PostgreSQL Array-Werte

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.

Einsetzen PostgreSQL Array-Werte

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:

Array-Daten abfragen

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:

Array-Daten abfragen

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:

Array-Daten abfragen

Ändern PostgreSQL Feld

Sie können alle oder nur ein einzelnes Element eines Arrays aktualisieren. Hier ist der Inhalt der Tabelle „Mitarbeiter“:

Ändern PostgreSQL Feld

Aktualisieren wir die zweite Telefonnummer des Mitarbeiters James Bush, dessen ID 3 ist:

Ändern PostgreSQL Feld

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:

Ändern PostgreSQL Feld

Lassen Sie uns die Tabelle abfragen, um zu überprüfen, ob die Änderung erfolgreich war:

Ändern PostgreSQL Feld

Der Wechsel war erfolgreich.

Suche in einem PostgreSQL Feld

Derzeit sieht unsere Mitarbeitertabelle wie folgt aus:

Suche in einem PostgreSQL Feld

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:

Suche in einem PostgreSQL Feld

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:

Arrays erweitern

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)

  1. Klicken Sie in der Navigationsleiste links auf Datenbanken.
  2. Klicken Sie auf die Schaltfläche „Demo“.

Bessere  PostgreSQL Arrays mit pgAdmin

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“.

Bessere  PostgreSQL Arrays mit pgAdmin

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“:

Einsetzen PostgreSQL Array-Werte

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“:

Einsetzen PostgreSQL Array-Werte

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“:

Abfragen von Array-Daten mit pgAdmin

Es sollte Folgendes zurückgeben:

Abfragen von Array-Daten mit pgAdmin

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;

Abfragen von Array-Daten mit pgAdmin

Es sollte Folgendes zurückgeben:

Abfragen von Array-Daten mit pgAdmin

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';

Abfragen von Array-Daten mit pgAdmin

Es sollte Folgendes zurückgeben:

Abfragen von Array-Daten mit pgAdmin

Ä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“.

Ändern PostgreSQL Array mit pgAdmin

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;

Ändern PostgreSQL Array mit pgAdmin

Es sollte Folgendes zurückgeben:

Ändern PostgreSQL Array mit pgAdmin

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“.

Suche in einem PostgreSQL Array mit pgAdmin

Es sollte Folgendes zurückgeben:

Suche in einem PostgreSQL Array mit pgAdmin

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“.

Erweitern von Arrays mit pgAdmin

Es sollte Folgendes zurückgeben:

Erweitern von Arrays mit pgAdmin

Laden Sie die in diesem Tutorial verwendete Datenbank herunter

Häufig gestellte Fragen

Ja. KI-Assistenten können CREATE TABLE-Anweisungen mit Array-Spalten, INSERT-Befehle mit ARRAY oder geschweiften Klammern sowie Funktionen wie unnest() oder ANY() schreiben. Testen Sie den generierten SQL-Code anhand Ihres Schemas, bevor Sie ihn ausführen.

Ja. KI-Tools können Ihnen empfehlen, ob eine Array-Spalte oder eine normalisierte Untertabelle besser zu Ihren Daten passt. Arrays eignen sich für kleine, feste Listen, während separate Tabellen für große oder häufig abgefragte Beziehungen geeignet sind. Überprüfen Sie dies anhand Ihrer Abfragemuster.

Verwenden Sie die Funktion array_length(array, dimension). Beispielsweise gibt array_length(contact, 1) die Anzahl der Elemente in der ersten Dimension des Kontakt-Arrays zurück.

Ja. Verwenden Sie die Funktion `array_append(array, value)` oder den Verkettungsoperator `||`. Beispielsweise fügt `UPDATE Employees SET contact = array_append(contact, '(408)-000-0000')` ein neues Element hinzu.

Fassen Sie diesen Beitrag mit folgenden Worten zusammen: