PostgreSQL-array: functies, type, voorbeeld

Inhoudsopgave:

Anonim

Wat is PostgreSQL-array?

In PostgreSQL kunnen we een kolom definiëren als een reeks geldige gegevenstypen. Het gegevenstype kan een ingebouwd, door de gebruiker gedefinieerd of opgesomd type zijn. Daarnaast spelen arrays een belangrijke rol in PostgreSQL.

Elk corresponderend PostgreSQL-gegevenstype wordt geleverd met een relevant array-type. Het gegevenstype integer heeft bijvoorbeeld het array-type integer [], het datatype karakter heeft het array-type character [], enz.

In deze PostgreSQL-tutorial leert u:

  • Wat is PostgreSQL-array?
  • PostgreSQL-arrays maken
  • PostgreSQL-matrixwaarden invoegen
  • Array-gegevens opvragen
  • PostgreSQL-array wijzigen
  • Zoeken in een PostgreSQL-array
  • Arrays uitbreiden
  • Met behulp van pgAdmin

PostgreSQL-arrays maken

In het volgende voorbeeld maken we een tabel met de naam Werknemers met de contactkolom gedefinieerd als een tekstarray:

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

De opdracht zou met succes moeten worden uitgevoerd.

PostgreSQL-matrixwaarden invoegen

Laten we nu waarden invoegen in de bovenstaande tabel:

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

Het invoegen zou met succes moeten verlopen.

De waarden van de derde kolom, dat wil zeggen contact, zijn als een array ingevoegd. Dit is bereikt door gebruik te maken van de ARRAY-constructor.

In dit voorbeeld hebben we ze tussen vierkante haken [] geplaatst. We hebben twee contacten voor de medewerkster Alice John.

Het is nog steeds mogelijk accolades {} te gebruiken, zoals hieronder wordt weergegeven:

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

De opdracht zou met succes moeten worden uitgevoerd.

De bovenstaande instructies zullen twee rijen invoegen in de tabel Werknemers. Als u accolades gebruikt, wordt de array tussen enkele aanhalingstekens (') geplaatst, terwijl de items in de tekstmatrix tussen dubbele aanhalingstekens (") staan.

Array-gegevens opvragen

Om de elementen van een array te doorzoeken, gebruiken we de SELECT-instructie.

Om de inhoud van onze Werknemers-tabel te zien, voeren we de volgende opdracht uit:

SELECT * FROM Employees;

Dit levert het volgende op:

De elementen van de matrixkolom, dat wil zeggen contact, staan ​​tussen accolades {}.

Om toegang te krijgen tot de array-elementen zelf, voegen we een subscript toe tussen vierkante haken []. Het eerste element in een array bevindt zich op positie 1.

We hebben bijvoorbeeld de namen van werknemers nodig en alleen hun eerste contactpersoon voor die werknemers met meer dan één contactpersoon. We hebben hier toegang toe als contact [1].

Laten we dit eens zien:

SELECT name, contact[1]FROM Employees;

Dit levert het volgende op:

We kunnen de SELECT-instructie samen met de WHERE-component gebruiken om rijen te filteren op basis van de matrixkolom.

Om bijvoorbeeld de medewerker met (408) -567-78234 als tweede contactpersoon te zien, kunnen we de volgende opdracht uitvoeren:

SELECTnameFROMEmployeesWHEREcontact [ 2 ] = '(408)-567-78234';

Dit levert het volgende op:

PostgreSQL-array wijzigen

U kunt alle of een enkel element van een array bijwerken.

Dit is de inhoud van de tabel Werknemers:

Laten we het tweede telefoonnummer van de werknemer James Bush bijwerken, wiens ID 3 is:

Voer de volgende opdracht uit:

UPDATE EmployeesSET contact [ 2 ] = '(408)-589-89347'WHEREid = 3;

De opdracht zou met succes moeten worden uitgevoerd:

Laten we de tabel doorzoeken om te controleren of de wijziging is geslaagd:

De verandering is gelukt.

Zoeken in een PostgreSQL-array

Momenteel ziet onze tabel Werknemers er als volgt uit:

Stel dat we moeten weten wie de eigenaar is van de contactpersoon (408) -783-5731, ongeacht de positie binnen de contactreeks, dan kunnen we de functie ANY () gebruiken, zoals hieronder wordt weergegeven:

SELECTname,contactFROMEmployeesWHERE'(408)-783-5731' = ANY (contact);

Dit levert het volgende op:

Arrays uitbreiden

We kunnen de waarden van een array opsplitsen in rijen. Dit proces staat bekend als array-uitbreiding.

In het voorbeeld van de tabel Werknemers zijn er enkele werknemers met twee contacten in de lijst met contacten. We kunnen deze opsplitsen in aparte rijen.

PostgreSQL biedt de unest () functie die hiervoor gebruikt kan worden.

Bijvoorbeeld:

SELECTname,unnest(contact)FROMEmployees;

Dit levert het volgende op:

De medewerkers Alice John en James Bush hebben twee contacten. We kunnen opsplitsen in afzonderlijke rijen.

Met behulp van pgAdmin

PostgreSQL-arrays maken

Om hetzelfde te bereiken met pgAdmin, doe je dit:

Stap 1) Log in op uw pgAdmin-account.

Stap 2)

  1. Klik op de navigatiebalk aan de linkerkant op rbases.
  2. Klik op de Demo-knop

Stap 3) Typ de vraag in de zoekopdrachteditor om de tabel Werknemers te maken:

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

Stap 4) Klik op de knop Uitvoeren.

PostgreSQL-matrixwaarden invoegen

Stap 1) Typ de volgende vraag in de zoekopdrachteditor:

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

Stap 2) Klik op de knop Uitvoeren:

Stap 3)

Om accolades in de query te gebruiken

Stap 1) Typ de volgende vraag in de zoekopdrachteditor:

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

Stap 2) Klik op de knop Uitvoeren:

Array-gegevens opvragen

Stap 1) Om de inhoud van de tabel Werknemers te zien, typt u de volgende query in de query-editor:

SELECT * FROM Employees;

Stap 2) Klik op de knop Uitvoeren:

Het zou het volgende moeten retourneren:

Stap 3) Om de eerste contacten van medewerkers te zien:

  1. Typ de volgende query in de query-editor:
    SELECT name, contact[1]FROM Employees;
  2. Klik op de knop Uitvoeren.

Het zou het volgende moeten retourneren:

Stap 4) Om de SELECT-instructie te combineren met de WHERE-component:

  1. Typ de volgende opdracht in de query-editor:
    SELECTnameFROMEmployeesWHEREcontact [ 2 ] = '(408)-567-78234';
  2. Klik op de knop Uitvoeren.

Het zou het volgende moeten retourneren:

PostgreSQL-array wijzigen

Stap 1) Om het tweede contact van de gebruiker met id 3 bij te werken, voert u de volgende opdracht uit:

UPDATE EmployeesSET contact [ 2 ] = '(408)-589-89347'WHEREid = 3;

Stap 2) Klik op de knop Uitvoeren.

Stap 3)

1. typ de volgende opdracht in de query-editor om te controleren of de wijziging is geslaagd:

SELECT * FROM Employees;

2.Klik op de knop Uitvoeren.

Het zou het volgende moeten retourneren:

Zoeken in een PostgreSQL-array

Stap 1) Typ de volgende vraag in de zoekopdrachteditor:

SELECTname,contactFROMEmployeesWHERE'(408)-783-5731' = ANY (contact);

Stap 2) Klik op de knop Uitvoeren.

Het zou het volgende moeten retourneren:

Arrays uitbreiden

Stap 1) Typ de volgende vraag in de zoekopdrachteditor:

SELECTname,unnest(contact)FROMEmployees;

Stap 2) Klik op de knop Uitvoeren.

Het zou het volgende moeten retourneren:

Overzicht:

  • Met PostgreSQL kunnen we een tabelkolom definiëren als een array-type.
  • De array moet van een geldig gegevenstype zijn, zoals een geheel getal, teken of door de gebruiker gedefinieerd type.
  • Om waarden in een matrixkolom in te voegen, gebruiken we de ARRAY-constructor.
  • Als er meer dan één element in dezelfde rij van een matrixkolom staat, bevindt het eerste element zich op positie 1.
  • Elke waarde is toegankelijk door een subscript tussen vierkante haken [] door te geven.
  • De elementen van de array kunnen worden opgehaald met de SELECT-instructie.
  • De waarden van de matrixkolom kunnen tussen vierkante haken [] of accolades {} staan.
  • We kunnen naar matrixkolomwaarden zoeken met de functie ANY ().

Download de database die in deze zelfstudie wordt gebruikt