PostgreSQL Array: Funktioner, Type, Eksempel

Indholdsfortegnelse:

Anonim

Hvad er PostgreSQL Array?

I PostgreSQL kan vi definere en kolonne som en række gyldige datatyper. Datatypen kan være indbygget, brugerdefineret eller optalt. Bortset fra dette spiller arrays en vigtig rolle i PostgreSQL.

Hver tilsvarende PostgreSQL-datatype leveres med en relevant arraytype. Heltalsdatatypen har for eksempel hele [] arraytypen, karakterdatatypen har tegnet [] arraytype osv.

I denne PostgreSQL-tutorial lærer du:

  • Hvad er PostgreSQL Array?
  • Oprettelse af PostgreSQL-arrays
  • Indsættelse af PostgreSQL Array Værdier
  • Forespørgsel om matrixdata
  • Ændring af PostgreSQL Array
  • Søger i et PostgreSQL-array
  • Udvidede arrays
  • Brug af pgAdmin

Oprettelse af PostgreSQL-arrays

I det følgende eksempel opretter vi en tabel med navnet Medarbejdere med kontaktkolonnen defineret som et tekstarray:

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

Kommandoen skal køre med succes.

Indsættelse af PostgreSQL Array Værdier

Lad os nu indsætte værdier i ovenstående tabel:

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

Indsættelsen skal køre med succes.

Værdierne i den tredje kolonne, dvs. kontakt, er indsat som en matrix. Dette er opnået ved brug af ARRAY-konstruktøren.

I dette eksempel har vi lukket dem inden for firkantede parenteser []. Vi har to kontakter til medarbejderen Alice John.

Det er stadig muligt for os at bruge krøllede seler {} som vist nedenfor:

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

Kommandoen skal køre med succes.

Ovenstående udsagn indsætter to rækker i tabellen Medarbejdere. Når du bruger krøllede parenteser, pakkes arrayet ind i enkelt anførselstegn ('), mens tekstmatrixelementerne er pakket inden for dobbelt anførselstegn (").

Forespørgsel om matrixdata

For at forespørge elementerne i en matrix bruger vi SELECT-sætningen.

For at se indholdet af vores medarbejdertabel kører vi følgende kommando:

SELECT * FROM Employees;

Dette returnerer følgende:

Elementerne i matrixkolonnen, dvs. kontakt, er lukket inden for krøllede seler {}.

For at få adgang til arrayelementerne selv tilføjer vi et abonnement inden for firkantede parenteser []. Det første element i en matrix er i position 1.

For eksempel er vi nødt til at få navnene på medarbejderne og kun deres første kontakt til de medarbejdere med mere end en kontakt. Vi kan få adgang til dette som kontakt [1].

Lad os se dette:

SELECT name, contact[1]FROM Employees;

Dette returnerer følgende:

Vi kan bruge SELECT-sætningen sammen med WHERE-klausulen til at filtrere rækker baseret på array-kolonnen.

For eksempel, for at se medarbejderen med (408) -567-78234 som den anden kontakt, kan vi køre følgende kommando:

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

Dette returnerer følgende:

Ændring af PostgreSQL Array

Du kan opdatere hele eller et enkelt element i en matrix.

Her er indholdet af medarbejdertabellen:

Lad os opdatere det andet telefonnummer til medarbejderen James Bush, hvis id er 3:

Kør følgende kommando:

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

Kommandoen skal køre med succes:

Lad os forespørge tabellen for at kontrollere, om ændringen var vellykket:

Ændringen var vellykket.

Søger i et PostgreSQL-array

I øjeblikket er vores medarbejdertabel som følger:

Antag, at vi har brug for at vide, hvem der ejer kontakten (408) -783-5731 uanset positionen inden for kontaktarrayet, vi kan bruge ANY () -funktionen som vist nedenfor:

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

Dette returnerer følgende:

Udvidede arrays

Vi kan dele værdierne for en matrix i rækker. Denne proces er kendt som array-ekspansion.

I eksemplet i tabellen Medarbejdere er der nogle medarbejdere med to kontakter i kontaktarrayet. Vi kan opdele disse i separate rækker.

PostgreSQL giver den unnest () funktion, der kan bruges til dette.

For eksempel:

SELECTname,unnest(contact)FROMEmployees;

Dette returnerer følgende:

Medarbejderne Alice John og James Bush har to kontakter. Vi kan opdele i separate rækker.

Brug af pgAdmin

Oprettelse af PostgreSQL-arrays

For at opnå det samme gennem pgAdmin skal du gøre dette:

Trin 1) Log ind på din pgAdmin-konto.

Trin 2)

  1. Fra navigationslinjen til venstre - Klik på rbaser.
  2. Klik på knappen Demo

Trin 3) Skriv forespørgslen i forespørgselseditoren for at oprette tabellen Medarbejdere:

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

Trin 4) Klik på knappen Udfør.

Indsættelse af PostgreSQL Array Værdier

Trin 1) Skriv følgende forespørgsel i forespørgselseditoren:

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

Trin 2) Klik på knappen Udfør:

Trin 3)

At bruge krøllede seler i forespørgslen

Trin 1) Skriv følgende forespørgsel i forespørgselseditoren:

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

Trin 2) Klik på knappen Udfør:

Forespørgsel om matrixdata

Trin 1) For at se indholdet af tabellen Medarbejdere skal du skrive følgende forespørgsel i forespørgselseditoren:

SELECT * FROM Employees;

Trin 2) Klik på knappen Udfør:

Den skal returnere følgende:

Trin 3) For at se medarbejdernes første kontakter:

  1. Skriv følgende forespørgsel i forespørgselseditoren:
    SELECT name, contact[1]FROM Employees;
  2. Klik på knappen Udfør.

Den skal returnere følgende:

Trin 4) Sådan kombineres SELECT-sætningen med WHERE-klausulen:

  1. Skriv følgende kommando i forespørgselseditoren:
    SELECTnameFROMEmployeesWHEREcontact [ 2 ] = '(408)-567-78234';
  2. Klik på knappen Udfør.

Den skal returnere følgende:

Ændring af PostgreSQL Array

Trin 1) Kør følgende kommando for at opdatere den anden kontakt af brugeren med id på 3:

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

Trin 2) Klik på knappen Udfør.

Trin 3)

1. Skriv følgende kommando i forespørgselseditoren for at kontrollere, om ændringen var vellykket:

SELECT * FROM Employees;

2.Klik på knappen Udfør.

Den skal returnere følgende:

Søger i et PostgreSQL-array

Trin 1) Skriv følgende forespørgsel i forespørgselseditoren:

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

Trin 2) Klik på knappen Udfør.

Den skal returnere følgende:

Udvidede arrays

Trin 1) Skriv følgende forespørgsel i forespørgselseditoren:

SELECTname,unnest(contact)FROMEmployees;

Trin 2) Klik på knappen Udfør.

Den skal returnere følgende:

Resumé:

  • PostgreSQL giver os mulighed for at definere en tabelkolonne som en array-type.
  • Matrixen skal være af en gyldig datatype, f.eks. Heltal, karakter eller brugerdefinerede typer.
  • For at indsætte værdier i en matrixkolonne bruger vi ARRAY-konstruktøren.
  • Hvis der er mere end et element i den samme række i en matrixkolonne, er det første element i position 1.
  • Du kan få adgang til hver værdi ved at sende et abonnement inden for firkantede parenteser [].
  • Elementerne i arrayet kan hentes ved hjælp af SELECT-sætningen.
  • Værdierne i matrixkolonnen kan være lukket inden for firkantede parenteser [] eller krøllede parenteser {}.
  • Vi kan søge efter matrixkolonneværdier ved hjælp af ANY () -funktionen.

Download den database, der blev brugt i denne vejledning