PostgreSQL Array: Funktionen, Typ, Beispiel

Was ist PostgreSQL Array?

In PostgreSQLkรถ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 eine wichtige Rolle PostgreSQL.

Jede entsprechende PostgreSQL Der Datentyp wird mit einem entsprechenden Array-Typ geliefert. 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 durch die Verwendung des ARRAY-Konstruktors erreicht.

In diesem Beispiel haben wir 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 Employees-Tabelle anzuzeigen, fรผhren wir den folgenden Befehl aus:

SELECT * FROM Employees;

Dies gibt Folgendes zurรผck:

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 einen Index in eckigen Klammern [] hinzu. Das erste Element in einem Array steht 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 gibt Folgendes zurรผck:

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 den 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 ein einzelnes Element eines Arrays aktualisieren.

Hier ist der Inhalt der Mitarbeitertabelle:

ร„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 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 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-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() bereit, die hierfรผr verwendet werden kann.

Beispielsweise:

SELECT
   name,
   unnest(contact)
FROM
   Employees;

Dies gibt Folgendes zurรผck:

Arrays erweitern

Die Mitarbeiter Alice John und James Bush haben zwei Ansprechpartner. Wir kรถnnen in separate Reihen 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 auf der linken Seite auf โ€žrbasesโ€œ.
  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

Schritt 1) Geben Sie die folgende Abfrage in den Abfrage-Editor ein:

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โ€œ:

Einsetzen PostgreSQL Array-Werte

Array-Daten abfragen

Schritt 1) Um den Inhalt der Tabelle โ€žEmployeesโ€œ anzuzeigen, geben Sie die folgende Abfrage im Abfrage-Editor 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) So sehen Sie die ersten Kontakte von Mitarbeitern:

  1. Geben Sie die folgende Abfrage in den Abfrage-Editor ein:
    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รผckgeben:

Abfragen von Array-Daten mit pgAdmin

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

  1. Geben Sie den folgenden Befehl im Abfrage-Editor ein:
    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รผ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 den 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)

1.Geben Sie den folgenden Befehl im Abfrage-Editor ein, um zu รผberprรผfen, ob die ร„nderung erfolgreich war:

SELECT * FROM Employees;

2.Klicken Sie auf die Schaltflรคche โ€žAusfรผhrenโ€œ.

ร„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

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 in eckigen Klammern [] รผbergeben wird.
  • Die Elemente des Arrays kรถnnen mit der SELECT-Anweisung abgerufen werden.
  • Die Werte der Array-Spalte kรถnnen in eckige Klammern [] oder geschweifte Klammern {} eingeschlossen werden.
  • Mit der Funktion ANY() kรถnnen wir nach Array-Spaltenwerten suchen.

Laden Sie die in diesem Tutorial verwendete Datenbank herunter

Fassen Sie diesen Beitrag mit folgenden Worten zusammen: