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)
- Fra navigasjonslinjen til venstre - Klikk på rbaser.
- 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:
- Skriv inn følgende spørsmål i redigeringsprogrammet:
SELECT name, contact[1]FROM Employees;
- Klikk på Utfør-knappen.
Den skal returnere følgende:
Trinn 4) Slik kombinerer du SELECT-setningen med WHERE-setningen:
- Skriv inn følgende kommando i spørreeditoren:
SELECTnameFROMEmployeesWHEREcontact [ 2 ] = '(408)-567-78234';
- 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