PostgreSQL-Array: Funktionen, Typ, Beispiel

Was ist ein PostgreSQL-Array?

In PostgreSQL können wir eine Spalte als Array gültiger Datentypen definieren. Der Datentyp kann ein integrierter, benutzerdefinierter oder aufgezählter Typ sein. Darüber hinaus spielen Arrays in PostgreSQL eine wichtige Rolle.

Jeder entsprechende PostgreSQL-Datentyp verfügt über einen relevanten Array-Typ. Beispielsweise hat der Datentyp „Integer“ den Array-Typ „Integer[], der Datentyp „Character“ den Array-Typ „Character[] usw.

Erstellen von PostgreSQL-Arrays

Im Folgendenwing Beispiel: Wir erstellen eine Tabelle mit dem Namen „Mitarbeiter“, wobei die Kontaktspalte als Textarray definiert ist:

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

Der Befehl sollte erfolgreich ausgeführt werden.

Erstellen von PostgreSQL-Arrays

Einfügen von PostgreSQL-Array-Werten

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.

Einfügen von PostgreSQL-Array-Werten

Die Werte der dritten Spalte, also Kontakt, wurden als Array eingefügt. Dies wurde durch die Verwendung des ARRAY-Konstruktors erreicht.

In diesem Beispiel haben wir sie in ein Quadrat eingeschlossen brackets []. 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.

Einfügen von PostgreSQL-Array-Werten

Die obigen Anweisungen fügen zwei Zeilen in die Tabelle „Employees“ ein. Bei Verwendung geschweifter Klammern wird das Array in einfache Anführungszeichen (') eingeschlossen, während die Elemente des Textarrays darin eingeschlossen werden double Zitate (").

Array-Daten abfragen

Um die Elemente eines Arrays abzufragen, verwenden wir die SELECT-Anweisung.

Um den Inhalt unserer Employees-Tabelle anzuzeigen, führen wir Folgendes aus:wing Befehl:

SELECT * FROM Employees;

Dies gibt Folgendes zurückwing:

Array-Daten abfragen

Die Elemente der Array-Spalte, also der Kontakt, wurden in geschweifte Klammern {} eingeschlossen.

Um auf die Array-Elemente selbst zuzugreifen, fügen wir innerhalb des Quadrats einen Index hinzu brackets []. Das erste Element in einem Array befindet sich an Position 1.

Beispielsweise benötigen wir die Namen der Mitarbeiter und nur deren Erstkontakt für Mitarbeiter mit mehr als einem Kontakt. Wir können darauf als Kontakt[1] zugreifen.

Sehen wir uns das an:

SELECT name, contact[1]
FROM Employees;

Dies wird Folgendes zurückgebenwing:

Array-Daten abfragen

Wir können die SELECT-Anweisung zusammen mit der WHERE-Klausel verwenden, um Zeilen basierend auf der Array-Spalte zu filtern.

Um beispielsweise den Mitarbeiter mit (408)-567-78234 als zweiten Kontakt anzuzeigen, können wir Folgendes ausführenwing Befehl:

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

Dies wird Folgendes zurückgebenwing:

Array-Daten abfragen

Ändern des PostgreSQL-Arrays

Sie können alle oder ein einzelnes Element eines Arrays aktualisieren.

Hier ist der Inhalt der Mitarbeitertabelle:

Ändern des PostgreSQL-Arrays

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

Ändern des PostgreSQL-Arrays

Führen Sie Folgendes auswing Befehl:

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

Der Befehl sollte erfolgreich ausgeführt werden:

Ändern des PostgreSQL-Arrays

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

Ändern des PostgreSQL-Arrays

Der Wechsel war erfolgreich.

Searching in einem PostgreSQL-Array

Derzeit sieht unsere Mitarbeitertabelle wie folgt aus:

Searching in einem PostgreSQL-Array

Angenommen, wir müssen wissen, wem der Kontakt (408)-783-5731 gehört, unabhängig von der Position innerhalb des Kontaktarrays, können wir die Funktion ANY() wie unten gezeigt verwenden:

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

Dies wird Folgendes zurückgebenwing:

Searching in einem PostgreSQL-Array

Arrays erweitern

Wir können die Werte eines Arrays in Zeilen aufteilen. Dieser Vorgang wird als Array-Erweiterung bezeichnet.

Im Beispiel der Tabelle „Employees“ gibt es einige Mitarbeiter mit zwei Kontakten im Kontaktarray. Wir können diese in separate Zeilen aufteilen.

PostgreSQL stellt die Funktion unnest() zur Verfügung, die hierfür verwendet werden kann.

Beispielsweise:

SELECT
   name,
   unnest(contact)
FROM
   Employees;

Dies wird Folgendes zurückgebenwing:

Arrays erweitern

Die Mitarbeiter Alice John und James Bush haben zwei Ansprechpartner. Wir können in separate Reihen aufteilen.

Verwenden von pgAdmin

Erstellen von 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 auf der linken Seite auf „rbases“.
  2. Klicken Sie auf die Schaltfläche Demo

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

Erstellen von PostgreSQL-Arrays mit pgAdmin

Einfügen von PostgreSQL-Array-Werten

Schritt 1) Geben Sie Folgendes einwing Abfrage im Abfrageeditor:

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

Schritt 2) Klicken Sie auf die Schaltfläche „Ausführen“:

Einfügen von PostgreSQL-Array-Werten

Schritt 3)

Um geschweifte Klammern in der Abfrage zu verwenden

Schritt 1) Geben Sie Folgendes einwing Abfrage im Abfrageeditor:

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

Schritt 2) Klicken Sie auf die Schaltfläche „Ausführen“:

Einfügen von PostgreSQL-Array-Werten

Array-Daten abfragen

Schritt 1) Geben Sie Folgendes ein, um den Inhalt der Mitarbeitertabelle anzuzeigen:wing Abfrage im Abfrageeditor:

SELECT * FROM Employees;

Schritt 2) Klicken Sie auf die Schaltfläche „Ausführen“:

Abfragen von Array-Daten mit pgAdmin

Es sollte Folgendes zurückgebenwing:

Abfragen von Array-Daten mit pgAdmin

Schritt 3) So sehen Sie die ersten Kontakte von Mitarbeitern:

  1. Geben Sie Folgendes einwing Abfrage im Abfrageeditor:
    SELECT name, contact[1]
    FROM Employees;
    
  2. Klicken Sie auf die Schaltfläche „Ausführen“.

Abfragen von Array-Daten mit pgAdmin

Es sollte Folgendes zurückgebenwing:

Abfragen von Array-Daten mit pgAdmin

Schritt 4) So kombinieren Sie die SELECT-Anweisung mit der WHERE-Klausel:

  1. Geben Sie Folgendes einwing Befehl im Abfrageeditor:
    SELECT
       name
    FROM
       Employees
    WHERE
       contact [ 2 ] = '(408)-567-78234';
    
  2. Klicken Sie auf die Schaltfläche „Ausführen“.

Abfragen von Array-Daten mit pgAdmin

Es sollte Folgendes zurückgebenwing:

Abfragen von Array-Daten mit pgAdmin

Ändern des PostgreSQL-Arrays

Schritt 1) Um den zweiten Kontakt des Benutzers mit der ID 3 zu aktualisieren, führen Sie Folgendes auswing Befehl:

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

Schritt 2) Klicken Sie auf die Schaltfläche „Ausführen“.

Ändern des PostgreSQL-Arrays mit pgAdmin

Schritt 3)

1.Geben Sie Folgendes einwing Befehl im Abfrageeditor, um zu prüfen, ob die Änderung erfolgreich war:

SELECT * FROM Employees;

2.Klicken Sie auf die Schaltfläche „Ausführen“.

Ändern des PostgreSQL-Arrays mit pgAdmin

Es sollte Folgendes zurückgebenwing:

Ändern des PostgreSQL-Arrays mit pgAdmin

Searching in einem PostgreSQL-Array

Schritt 1) Geben Sie Folgendes einwing Abfrage im Abfrageeditor:

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

Schritt 2) Klicken Sie auf die Schaltfläche „Ausführen“.

Searching in einem PostgreSQL-Array mit pgAdmin

Es sollte Folgendes zurückgebenwing:

Searching in einem PostgreSQL-Array mit pgAdmin

Arrays erweitern

Schritt 1) Geben Sie Folgendes einwing Abfrage im Abfrageeditor:

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ückgebenwing:

Erweitern von Arrays mit pgAdmin

Zusammenfassung

  • PostgreSQL ermöglicht es uns, eine Tabellenspalte als Array-Typ zu definieren.
  • Das Array muss gültig sein Datentyp wie Ganzzahl-, Zeichen- oder benutzerdefinierte Typen.
  • Um Werte in eine Array-Spalte einzufügen, verwenden wir den ARRAY-Konstruktor.
  • Befinden sich mehr als ein Element in derselben Zeile einer Array-Spalte, befindet sich das erste Element an Position 1.
  • Auf jeden Wert kann zugegriffen werden, indem ein Index innerhalb des Quadrats übergeben wird brackets [].
  • Die Elemente des Arrays können mit der SELECT-Anweisung abgerufen werden.
  • Die Werte der Array-Spalte können in Quadrate eingeschlossen werden brackets [] oder geschweifte Klammern {}.
  • Mit der Funktion ANY() können wir nach Array-Spaltenwerten suchen.

Laden Sie die in diesem Tutorial verwendete Datenbank herunter