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. Abgesehen davon spielen Arrays eine wichtige Rolle in PostgreSQL.
Jeder entsprechende PostgreSQL-Datentyp wird mit einem relevanten Array-Typ geliefert. Beispielsweise hat der Datentyp "Integer" den Array-Typ "Integer []", der Zeichendatentyp den Array-Typ "Character" usw.
In diesem PostgreSQL-Tutorial lernen Sie:
- Was ist ein PostgreSQL-Array?
- Erstellen von PostgreSQL-Arrays
- Einfügen von PostgreSQL-Array-Werten
- Abfragen von Array-Daten
- Ändern des PostgreSQL-Arrays
- Suchen in einem PostgreSQL-Array
- Arrays erweitern
- Verwenden von pgAdmin
Erstellen von PostgreSQL-Arrays
Im folgenden Beispiel erstellen wir 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.
Einfügen von PostgreSQL-Array-Werten
Fügen wir nun Werte in die obige Tabelle ein:
INSERT INTO EmployeesVALUES(1,'Alice John',ARRAY [ '(408)-743-9045','(408)-567-7834' ]);
Das Einfügen sollte erfolgreich ausgeführt werden.
Die Werte der dritten Spalte, dh des Kontakts, wurden als Array eingefügt. Dies wurde durch Verwendung des ARRAY-Konstruktors erreicht.
In diesem Beispiel haben wir sie in eckige Klammern gesetzt []. Wir haben zwei Kontakte für die Mitarbeiterin Alice John.
Es ist weiterhin möglich, geschweifte Klammern {} wie unten gezeigt zu verwenden:
INSERT INTO EmployeesVALUES(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 Employees-Tabelle ein. Bei Verwendung von geschweiften Klammern wird das Array in einfache Anführungszeichen (') eingeschlossen, während die Textarray-Elemente in doppelte Anführungszeichen (") eingeschlossen werden.
Abfragen von Array-Daten
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:
Die Elemente der Array-Spalte, dh 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 befindet sich an Position 1.
Zum Beispiel müssen wir die Namen der Mitarbeiter und nur deren ersten Kontakt für diejenigen Mitarbeiter mit mehr als einem Kontakt erhalten. Wir können darauf als Kontakt zugreifen [1].
Lassen Sie uns das sehen:
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 basierend auf der Array-Spalte zu filtern.
Um beispielsweise den Mitarbeiter mit (408) -567-78234 als zweiten Kontakt anzuzeigen, können Sie den folgenden Befehl ausführen:
SELECTnameFROMEmployeesWHEREcontact [ 2 ] = '(408)-567-78234';
Dies gibt Folgendes zurück:
Ändern des PostgreSQL-Arrays
Sie können alle oder ein einzelnes Element eines Arrays aktualisieren.
Hier ist der Inhalt der Employees-Tabelle:
Lassen Sie uns die zweite Telefonnummer des Mitarbeiters James Bush aktualisieren, dessen ID 3 ist:
Führen Sie den folgenden Befehl aus:
UPDATE EmployeesSET contact [ 2 ] = '(408)-589-89347'WHEREid = 3;
Der Befehl sollte erfolgreich ausgeführt werden:
Fragen wir die Tabelle ab, um zu überprüfen, ob die Änderung erfolgreich war:
Die Änderung war erfolgreich.
Suchen in einem PostgreSQL-Array
Derzeit lautet unsere Mitarbeitertabelle wie folgt:
Angenommen, wir müssen wissen, wem der Kontakt (408) -783-5731 gehört, unabhängig von der Position innerhalb des Kontaktarrays. Wir können die Funktion ANY () wie folgt verwenden:
SELECTname,contactFROMEmployeesWHERE'(408)-783-5731' = ANY (contact);
Dies gibt Folgendes zurück:
Arrays erweitern
Wir können die Werte eines Arrays in Zeilen aufteilen. Dieser Prozess wird als Array-Erweiterung bezeichnet.
Im Beispiel der Tabelle "Mitarbeiter" befinden sich einige Mitarbeiter mit zwei Kontakten im Kontaktarray. Wir können diese in separate Zeilen aufteilen.
PostgreSQL bietet die unnest () -Funktion, die dafür verwendet werden kann.
Zum Beispiel:
SELECTname,unnest(contact)FROMEmployees;
Dies gibt Folgendes zurück:
Die Mitarbeiter Alice John und James Bush haben zwei Kontakte. Wir können in separate Zeilen aufteilen.
Verwenden von pgAdmin
Erstellen von PostgreSQL-Arrays
Gehen Sie folgendermaßen vor, um dasselbe mit pgAdmin zu erreichen:
Schritt 1) Melden Sie sich bei Ihrem pgAdmin-Konto an.
Schritt 2)
- Klicken Sie in der Navigationsleiste auf der linken Seite auf rbases.
- Klicken Sie auf die Schaltfläche Demo
Schritt 3) Geben Sie die Abfrage in den Abfrageeditor ein, um die Employees-Tabelle zu erstellen:
CREATE TABLE Employees (id int PRIMARY KEY,name VARCHAR (100),contact TEXT []);
Schritt 4) Klicken Sie auf die Schaltfläche Ausführen.
Einfügen von PostgreSQL-Array-Werten
Schritt 1) Geben Sie die folgende Abfrage in den Abfrageeditor ein:
INSERT INTO EmployeesVALUES(1,'Alice John',ARRAY [ '(408)-743-9045','(408)-567-7834' ]);
Schritt 2) Klicken Sie auf die Schaltfläche Ausführen:
Schritt 3)
So verwenden Sie geschweifte Klammern in der Abfrage
Schritt 1) Geben Sie die folgende Abfrage in den Abfrageeditor ein:
INSERT INTO EmployeesVALUES(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:
Abfragen von Array-Daten
Schritt 1) Um den Inhalt der Employees-Tabelle anzuzeigen, geben Sie die folgende Abfrage im Abfrage-Editor ein:
SELECT * FROM Employees;
Schritt 2) Klicken Sie auf die Schaltfläche Ausführen:
Es sollte Folgendes zurückgeben:
Schritt 3) So sehen Sie die ersten Kontakte der Mitarbeiter:
- Geben Sie die folgende Abfrage in den Abfrageeditor ein:
SELECT name, contact[1]FROM Employees;
- Klicken Sie auf die Schaltfläche Ausführen.
Es sollte Folgendes zurückgeben:
Schritt 4) So kombinieren Sie die SELECT-Anweisung mit der WHERE-Klausel:
- Geben Sie den folgenden Befehl in den Abfrageeditor ein:
SELECTnameFROMEmployeesWHEREcontact [ 2 ] = '(408)-567-78234';
- Klicken Sie auf die Schaltfläche Ausführen.
Es sollte Folgendes zurückgeben:
Ändern des PostgreSQL-Arrays
Schritt 1) Führen Sie den folgenden Befehl aus, um den zweiten Kontakt des Benutzers mit der ID 3 zu aktualisieren:
UPDATE EmployeesSET contact [ 2 ] = '(408)-589-89347'WHEREid = 3;
Schritt 2) Klicken Sie auf die Schaltfläche Ausführen.
Schritt 3)
1. Geben Sie den folgenden Befehl in den Abfrageeditor ein, um zu überprüfen, ob die Änderung erfolgreich war:
SELECT * FROM Employees;
2.Klicken Sie auf die Schaltfläche Ausführen.
Es sollte Folgendes zurückgeben:
Suchen in einem PostgreSQL-Array
Schritt 1) Geben Sie die folgende Abfrage in den Abfrageeditor ein:
SELECTname,contactFROMEmployeesWHERE'(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 Abfrageeditor ein:
SELECTname,unnest(contact)FROMEmployees;
Schritt 2) Klicken Sie auf die Schaltfläche Ausführen.
Es sollte Folgendes zurückgeben:
Zusammenfassung:
- Mit PostgreSQL können wir eine Tabellenspalte als Array-Typ definieren.
- Das Array muss einen gültigen Datentyp haben, z. B. eine Ganzzahl, ein 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