PostgreSQL Array: Funksjoner, Type, Eksempel

Innholdsfortegnelse:

Anonim

Hva er PostgreSQL Array?

I PostgreSQL kan vi definere en kolonne som en rekke gyldige datatyper. Datatypen kan være innebygd, brukerdefinert eller oppregnet. Annet enn dette spiller matriser en viktig rolle i PostgreSQL.

Hver tilsvarende PostgreSQL-datatype kommer med en relevant matritype. Heltalldatatypen har for eksempel heltall [] arraytype, karakterdatatypen har tegnet [] arraytype, etc.

I denne PostgreSQL-opplæringen lærer du:

  • Hva er PostgreSQL Array?
  • Opprette PostgreSQL Arrays
  • Sette inn PostgreSQL Array-verdier
  • Spørring av arraydata
  • Endring av PostgreSQL Array
  • Søker i en PostgreSQL-serie
  • Utvide arrays
  • Bruke pgAdmin

Opprette PostgreSQL Arrays

I det følgende eksemplet vil vi lage en tabell med navnet Ansatte med kontaktkolonnen definert som en tekstmatrise:

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

Kommandoen skal kjøre vellykket.

Sette inn PostgreSQL Array-verdier

La oss nå sette inn verdier i tabellen ovenfor:

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

Innsettingen skal kjøre vellykket.

Verdiene til den tredje kolonnen, det vil si kontakten, er satt inn som en matrise. Dette er oppnådd ved bruk av ARRAY-konstruktøren.

I dette eksemplet har vi lukket dem innenfor hakeparenteser []. Vi har to kontakter for den ansatte Alice John.

Det er fortsatt mulig for oss å bruke krøllete bukseseler {} som vist nedenfor:

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

Kommandoen skal kjøre vellykket.

Ovennevnte uttalelser vil sette inn to rader i tabellen ansatte. Når du bruker krøllete klammeparenteser, blir matrisen pakket inn i enkle anførselstegn (') mens tekstmatriselementene er pakket inn i dobbelt anførselstegn (").

Spørring av arraydata

For å spørre elementene i en matrise bruker vi SELECT-setningen.

For å se innholdet i tabellen ansatte, kjører vi følgende kommando:

SELECT * FROM Employees;

Dette returnerer følgende:

Elementene i matrisekolonnen, det vil si kontakt, er lukket i krøllete bukseseler {}.

For å få tilgang til selve matriseelementene, legger vi til et abonnement innen parentes []. Det første elementet i en matrise er i posisjon 1.

For eksempel trenger vi å få navn på ansatte og bare deres første kontakt for de ansatte med mer enn en kontakt. Vi kan få tilgang til dette som kontakt [1].

La oss se dette:

SELECT name, contact[1]FROM Employees;

Dette vil returnere følgende:

Vi kan bruke SELECT-setningen sammen med WHERE-setningen til å filtrere rader basert på matrisekolonnen.

For eksempel, for å se den ansatte med (408) -567-78234 som den andre kontakten, kan vi kjøre følgende kommando:

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

Dette vil returnere følgende:

Endring av PostgreSQL Array

Du kan oppdatere hele eller et enkelt element i en matrise.

Her er innholdet i tabellen ansatte:

La oss oppdatere det andre telefonnummeret til den ansatte James Bush, hvis ID er 3:

Kjør følgende kommando:

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

Kommandoen skal kjøre vellykket:

La oss spørre om tabellen for å sjekke om endringen var vellykket:

Endringen var vellykket.

Søker i en PostgreSQL-serie

For tiden er tabellen medarbeidere som følger:

Anta at vi trenger å vite hvem som eier kontakten (408) -783-5731 uavhengig av posisjonen i kontaktoppsettet, vi kan bruke ANY () -funksjonen som vist nedenfor:

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

Dette vil returnere følgende:

Utvide arrays

Vi kan dele verdiene til en matrise i rader. Denne prosessen er kjent som array-utvidelse.

I eksemplet på tabellen Ansatte er det noen ansatte med to kontakter i kontaktoppstillingen. Vi kan dele disse i separate rader.

PostgreSQL gir den unnest () funksjonen som kan brukes til dette.

For eksempel:

SELECTname,unnest(contact)FROMEmployees;

Dette vil returnere følgende:

De ansatte Alice John og James Bush har to kontakter. Vi kan dele oss i separate rader.

Bruke pgAdmin

Opprette PostgreSQL Arrays

For å oppnå det samme gjennom pgAdmin, gjør du dette:

Trinn 1) Logg inn på pgAdmin-kontoen din.

Steg 2)

  1. Fra navigasjonslinjen til venstre - Klikk på rbaser.
  2. Klikk på Demo-knappen

Trinn 3) Skriv inn spørringen i spørringseditoren for å opprette tabellen Ansatte:

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

Trinn 4) Klikk på Utfør-knappen.

Sette inn PostgreSQL Array-verdier

Trinn 1) Skriv inn følgende spørring i spørreeditoren:

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

Trinn 2) Klikk på Utfør-knappen:

Trinn 3)

Å bruke krøllete bukseseler i spørringen

Trinn 1) Skriv inn følgende spørring i spørreeditoren:

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

Trinn 2) Klikk på Utfør-knappen:

Spørring av arraydata

Trinn 1) For å se innholdet i tabellen ansatte, skriv inn følgende spørring i spørringseditoren:

SELECT * FROM Employees;

Trinn 2) Klikk på Utfør-knappen:

Den skal returnere følgende:

Trinn 3) Slik ser du de første kontaktene til ansatte:

  1. Skriv inn følgende spørsmål i redigeringsprogrammet:
    SELECT name, contact[1]FROM Employees;
  2. Klikk på Utfør-knappen.

Den skal returnere følgende:

Trinn 4) Slik kombinerer du SELECT-setningen med WHERE-setningen:

  1. Skriv inn følgende kommando i spørreeditoren:
    SELECTnameFROMEmployeesWHEREcontact [ 2 ] = '(408)-567-78234';
  2. Klikk på Utfør-knappen.

Den skal returnere følgende:

Endring av PostgreSQL Array

Trinn 1) For å oppdatere den andre kontakten til brukeren med id på 3, kjør følgende kommando:

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

Trinn 2) Klikk på Utfør-knappen.

Trinn 3)

1. Skriv inn følgende kommando i spørreditoren for å sjekke om endringen var vellykket:

SELECT * FROM Employees;

2.Klikk på Utfør-knappen.

Den skal returnere følgende:

Søker i en PostgreSQL-serie

Trinn 1) Skriv inn følgende spørring i spørreeditoren:

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

Trinn 2) Klikk på Utfør-knappen.

Den skal returnere følgende:

Utvide arrays

Trinn 1) Skriv inn følgende spørring i spørreeditoren:

SELECTname,unnest(contact)FROMEmployees;

Trinn 2) Klikk på Utfør-knappen.

Den skal returnere følgende:

Sammendrag:

  • PostgreSQL lar oss definere en tabellkolonne som en array-type.
  • Matrisen må være av en gyldig datatype, for eksempel heltall, karakter eller brukerdefinerte typer.
  • For å sette inn verdier i en matrisekolonne, bruker vi ARRAY-konstruktøren.
  • Hvis det er mer enn ett element i samme rad i en matrisekolonne, er det første elementet i posisjon 1.
  • Du får tilgang til hver verdi ved å sende et abonnement innenfor parentes [].
  • Elementene i matrisen kan hentes ved hjelp av SELECT-setningen.
  • Verdiene til matrisekolonnen kan omsluttes mellom hakeparenteser [] eller krøllete parenteser {}.
  • Vi kan søke etter matrise kolonneverdier ved hjelp av ALLE () funksjonen.

Last ned databasen som brukes i denne veiledningen